获取 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 指针值指定为第一个调用参数。