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。 否則,例程會傳回適當的錯誤碼。 下表顯示可能的傳回狀態代碼。
| 傳回碼 | 描述 |
|---|---|
|
表示沒有足夠的資源可以完成作業。 |
言論
此例程會註冊來自編解碼器之未請求回應的回呼例程。 例程會輸出標記,以識別未經請求的回應。 當 HD 音訊總線驅動程式遇到任何具有相符標籤值的編解碼器未請求的回應時,例程會在 IRQL DISPATCH_LEVEL呼叫指定的回呼例程,並將指定的內容值當做呼叫參數傳遞至例程。
在呼叫 registerEventCallback 之後,函式驅動程式會負責程式設計編解碼器或編解碼器,以產生具有指定卷標的未請求回應。
例程會將唯一標記指派給每個已註冊的回呼例程。 卷標和回呼例程之間的唯一關聯會持續存在,只要回呼例程仍保持註冊。 函式驅動程式可以呼叫 unregisterEventCallback 來刪除回呼例程的註冊。
目前,公交車司機可以為每個編解碼器提供最多64個唯一標記。
callback 參數是函式驅動程式中回呼例程的函式指標。 回呼例程的函式指標類型定義為:
typedef VOID
(*PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK)
(HDAUDIO_CODEC_RESPONSE, PVOID);
第一個呼叫參數是類型為 HDAUDIO_CODEC_RESPONSE 的結構,可指定編解碼器對命令的回應。 這個結構會以值傳遞。 第二個呼叫參數是先前傳遞至 registerEventCallback registerEventCallback 值的 callbackContext。 HD 音訊總線驅動程式會在 IRQL DISPATCH_LEVEL呼叫回呼例程。
要求
| 要求 | 價值 |
|---|---|
| 目標平臺 | 桌面 |
| 標頭 | hdaudio.h (包括 Hdaudio.h) |
| IRQL | PASSIVE_LEVEL (請參閱一節) |