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 |