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_INTERFACEHDAUDIO_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。 否则,例程将返回相应的错误代码。 下表显示了可能的返回状态代码。

返回代码 说明
STATUS_INSUFFICIENT_RESOURCES
指示没有足够的资源可用于完成操作。

注解

此例程为来自编解码器的未经请求的响应注册回调例程。 例程输出标记以标识未经请求的响应。 当 HD Audio 总线驱动程序遇到来自具有匹配标记值的任何编解码器的未经请求的响应时,该例程在 IRQL DISPATCH_LEVEL调用指定的回调例程,并将指定的上下文值作为调用参数传递给例程。

调用 RegisterEventCallback 后,函数驱动程序负责对编解码器或编解码器进行编程,以生成具有指定标记的未经请求的响应。

例程将唯一标记分配给每个已注册的回调例程。 只要回调例程保持注册状态,标记和回调例程之间的唯一关联就一直存在。 函数驱动程序可以通过调用 UnregisterEventCallback 删除回调例程的注册。

目前,总线驱动程序为每个编解码器最多提供 64 个唯一标记。

callback 参数是指向函数驱动程序中回调例程的函数指针。 回调例程的函数指针类型定义为:

typedef VOID
  (*PHDAUDIO_UNSOLICITED_RESPONSE_CALLBACK)
    (HDAUDIO_CODEC_RESPONSE, PVOID);

第一个调用参数是 HDAUDIO_CODEC_RESPONSE 类型的结构,用于指定编解码器对命令的响应。 此结构按值传递。 第二个调用参数是之前传递给 RegisterEventCallbackcallbackContext 值。 HD 音频总线驱动程序在 IRQL DISPATCH_LEVEL调用回调例程。

要求

要求
目标平台 桌面
标头 hdaudio.h (包括 Hdaudio.h)
IRQL PASSIVE_LEVEL (请参阅“备注”部分)

另请参阅

HDAUDIO_BUS_INTERFACE

HDAUDIO_BUS_INTERFACE_BDL

HDAUDIO_BUS_INTERFACE_V2

HDAUDIO_CODEC_RESPONSE

UnregisterEventCallback  

hdaudio.h