获取 HDAUDIO_BUS_INTERFACE_BDL DDI 对象

如前所述,音频或调制解调器编解码器的函数驱动程序会将 IRP_MN_QUERY_INTERFACE IOCTL 发送到 HD 音频总线驱动程序,以获取具有 HD 音频 DDI 的对象的计数引用。

下表显示了函数驱动程序写入 IOCTL 的输入参数值,以获取 HDAUDIO_BUS_INTERFACE_BDL 结构和此结构定义的 HD 音频 DDI 版本的上下文对象。

参数

CONST GUID *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE_BDL

USHORT Size

sizeof(HDAUDIO_BUS_INTERFACE_BDL)

USHORT Version

0x0100

PINTERFACE Interface

指向 HDAUDIO_BUS_INTERFACE_BDL 结构的指针

PVOID InterfaceSpecificData

NULL

函数驱动程序为 HDAUDIO_BUS_INTERFACE_BDL 结构分配存储,并在 IOCTL 中包含指向此结构的指针。 在前一个表中,指向 HDAUDIO_BUS_INTERFACE_BDL 结构的指针将被强制转换为类型 PINTERFACE,该类型是指向 INTERFACE 类型的结构的指针。 HDAUDIO_BUS_INTERFACE_BDL 的前五个成员的名称和类型与 INTERFACE 的五个成员的名称和类型匹配。 HDAUDIO_BUS_INTERFACE_BDL 包含其他成员,这些成员是指向 DDI 例程的函数指针。 为了响应从函数驱动程序接收 IOCTL,HD 音频总线驱动程序将填充整个 HDAUDIO_BUS_INTERFACE_BDL 结构。

下表显示了 HD 音频总线驱动程序写入 HDAUDIO_BUS_INTERFACE_BDL 结构的前五个成员的值。

成员

USHORT Size

sizeof(HDAUDIO_BUS_INTERFACE_BDL)

USHORT Version

0x0100

PVOID Context

需要作为第一个调用参数传递给每个 DDI 例程的上下文信息

PINTERFACE_REFERENCE InterfaceReference

指向递增上下文对象的引用计数的例程的指针

PINTERFACE_DEREFERENCE InterfaceDereference

指向递减上下文对象的引用计数的例程的指针

在前一个表中,Context 成员指向一个上下文对象,该对象包含特定于客户端从 IOCTL 获取的 DDI 的 HDAUDIO_BUS_INTERFACE_BDL 版本的特定实例的信息。 如前所述,当调用 DDI 中的任何例程时,客户端函数驱动程序必须始终将 Context 指针值指定为第一个调用参数。