PREGISTER_EVENT_CALLBACK回呼函式 (hdaudio.h)
RegisterEventCallback 例程會針對編解碼器或編解碼器的未經要求回應,註冊回呼例程。
RegisterEventCallback 例程的函式指標類型定義如下。
語法
PREGISTER_EVENT_CALLBACK PregisterEventCallback;
NTSTATUS PregisterEventCallback(
[in] PVOID _context,
[in] PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK Routine,
[in] PVOID Context,
[out] PUCHAR Tag
)
{...}
參數
[in] _context
指定HDAUDIO_BUS_INTERFACE、HDAUDIO_BUS_INTERFACE_V2或HDAUDIO_BUS_INTERFACE_BDL 結構之Context成員的內容值。
[in] Routine
回呼例程的函式指標。 此參數必須是類型為 PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK的有效非 NULL 函式指標。 如需詳細資訊,請參閱接下來的<備註>一節。
[in] Context
指定回呼例程的內容值。 呼叫端會將內容值轉換成 PVOID 類型。 當編解碼器產生包含指定卷標的未經要求回應時,HD 音訊總線驅動程式會將內容值傳遞至回呼例程做為呼叫參數。
[out] Tag
擷取標記值,以識別未經請求的回應。 此參數指向呼叫端配置的UCHAR變數,而例程會將標籤值寫入其中。 呼叫端在程式設計編解碼器或編解碼器以產生未經請求的回應時,應該指定這個標記值。 如需詳細資訊,請參閱接下來的<備註>一節。
傳回值
RegisterEventCallback 會在呼叫成功註冊事件時傳回STATUS_SUCCESS。 否則,例程會傳回適當的錯誤碼。 下表顯示可能的傳回狀態代碼。
傳回碼 | Description |
---|---|
|
表示沒有足夠的資源可用來完成作業。 |
備註
此例程會針對來自編解碼器的未經要求回應註冊回呼例程。 例程會輸出標記,以識別未經請求的回應。 當 HD 音訊總線驅動程式遇到任何具有相符標籤值的編解碼器未經請求的回應時,例程會在 IRQL DISPATCH_LEVEL呼叫指定的回呼例程,並將指定的內容值傳遞至例程作為呼叫參數。
在呼叫 RegisterEventCallback 之後,函式驅動程式會負責程式設計編解碼器或編解碼器,以產生具有指定卷標的未要求回應。
例程會將唯一標記指派給每個已註冊的回呼例程。 只要回呼例程保持註冊,標籤和回呼例程之間的唯一關聯就會持續存在。 函式驅動程式可以藉由呼叫 UnregisterEventCallback 來刪除回呼例程的註冊。
目前,總線驅動程式每個編解碼器最多可提供64個唯一標記。
回呼參數是函式驅動程式中回呼例程的函式指標。 回呼例程的函式指標類型定義為:
typedef VOID
(*PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK)
(HDAUDIO_CODEC_RESPONSE, PVOID);
第一個呼叫參數是類型 HDAUDIO_CODEC_RESPONSE 結構,指定編解碼器對命令的回應。 這個結構會以值傳遞。 第二個呼叫參數是先前傳遞至 RegisterEventCallback 的 callbackContext 值。 HD 音訊總線驅動程式會在 IRQL DISPATCH_LEVEL呼叫回呼例程。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | hdaudio.h (包含 Hdaudio.h) |
IRQL | PASSIVE_LEVEL (请参阅一节) |