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结构的上下文成员中的上下文值。
[in] Routine
指向回调例程的函数指针。 此参数必须是PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK类型的有效非 NULL 函数指针。 有关更多信息,请参见下面的“备注”部分。
[in] Context
指定回调例程的上下文值。 调用方将上下文值强制转换为 PVOID 类型。 当编解码器生成包含指定标记的未经请求的响应时,HD 音频总线驱动程序会将上下文值作为调用参数传递给回调例程。
[out] Tag
检索标识未请求响应的标记值。 此参数指向调用方分配的 UCHAR 变量,该变量将例程写入标记值。 调用方应在编程编解码器或编解码器以生成未经请求的响应时指定此标记值。 有关更多信息,请参见下面的“备注”部分。
返回值
如果调用成功注册事件,RegisterEventCallback 将返回STATUS_SUCCESS。 否则,例程返回适当的错误代码。 下表显示了可能的返回状态代码。
返回代码 | 说明 |
---|---|
|
指示没有足够的资源来完成操作。 |
备注
此例程为来自编解码器的未经请求的响应注册回调例程。 例程输出一个标记来标识未经请求的响应。 当 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调用回调例程。
要求
目标平台 | 桌面 |
Header | hdaudio.h (包括 Hdaudio.h) |
IRQL | PASSIVE_LEVEL (请参阅“备注”部分) |