共用方式為


PREGISTER_NOTIFICATION_CALLBACK回呼函式 (hdaudio.h)

RegisterNotificationCallback 例程會註冊回呼例程,以便接收具有更精確計時資訊的 DMA 進度通知。

語法

PREGISTER_NOTIFICATION_CALLBACK PregisterNotificationCallback;

NTSTATUS PregisterNotificationCallback(
  PVOID _context,
  HANDLE Handle,
  PDEVICE_OBJECT Fdo,
  PHDAUDIO_DMA_NOTIFICATION_CALLBACK NotificationCallback,
  PVOID CallbackContext
)
{...}

參數

_context

指定 HDAUDIO_BUS_INTERFACE_V3 結構之 Context 成員的內容值。

Handle

識別 DMA 引擎的句柄。 這個句柄值是從先前呼叫 AllocateCaptureDmaEngine 或 AllocateRenderDmaEngine 取得。

Fdo

擁有回呼的 FDO。 hdaudbus 驅動程式會在註冊回呼時在此 FDO 上取得參考,以確保回呼例程有效。

NotificationCallback

將在 DMA 進行時呼叫以通知驅動程式的回呼例程。 根據與 AllocateDmaBufferWithNotification 搭配使用的通知計數參數而定,每次 DMA 通過音頻緩衝區時,已註冊的事件都會發出一或兩次的訊號。

CallbackContext

回呼例程的驅動程式特定內容值。

傳回值

RegisterNotificationCallback 如果呼叫成功註冊事件,就會傳回STATUS_SUCCESS。 否則,例程會傳回STATUS_INSUFFICIENT_RESOURCES,表示沒有足夠的資源可用來完成作業。

如需詳細資訊,請參閱 NTSTATUS值

備註

RegisterNotificationCallback 會向 HD 音訊總線驅動程式註冊通知回呼例程。 HD 音訊總線驅動程式會針對每個 DMA 引擎維護已註冊的通知事件和回呼例程清單。 每次引擎收到 IOC 中斷時都會發出訊號,而且所有通知回呼例程都會在 IRQL=DPC 呼叫,並在發生 IOC 時使用 QPC 時間戳呼叫。

使用相同的 NotificationCallback 和 CallbackContext 值呼叫 UnregisterNotificationCallback 來取消註冊通知回呼例程。

在註冊之後,HD 音訊總線驅動程式會維護 FDO 上的參考,直到呼叫相符的取消註冊為止。

規格需求

需求
最低支援的用戶端 19H1
標頭 hdaudio.h (包含 hdaudio.h)
IRQL PASSIVE_LEVEL

另請參閱

HDAUDIO_BUS_INTERFACE_V3

PREGISTER_NOTIFICATION_CALLBACK回呼函式

hdaudio.h