获取 HDAUDIO_BUS_INTERFACE_V2 DDI 对象

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

参数

CONST GUID *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE_V2

USHORT 大小

sizeof (HDAUDIO_BUS_INTERFACE_V2)

USHORT 版本

0x0100

PINTERFACE 接口

指向 HDAUDIO_BUS_INTERFACE_V2 结构的指针

PVOID InterfaceSpecificData

NULL

函数驱动程序为 HDAUDIO_BUS_INTERFACE_V2 结构分配存储,并在 IOCTL 中包含指向此结构的指针。 在上一个表中,指向 HDAUDIO_BUS_INTERFACE_V2 结构的指针被强制转换为类型 PINTERFACE,它是指向类型 接口的结构的指针。 HDAUDIO_BUS_INTERFACE_V2的前五个成员的名称和类型与接口的五个成员的名称和类型相匹配。 HDAUDIO_BUS_INTERFACE_V2 包含属于 DDI 例程的函数指针的其他成员。 为了响应从函数驱动程序接收 IOCTL,HD audio bus 驱动程序将填充 HDAUDIO_BUS_INTERFACE_V2 结构。

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

成员 “值”

USHORT 大小

sizeof (HDAUDIO_BUS_INTERFACE_V2)

USHORT 版本

0x0100

PVOID 上下文

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

PINTERFACE_REFERENCE InterfaceReference

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

PINTERFACE_DEREFERENCE InterfaceDereference

指向一个例程的指针,该例程将减小上下文对象的引用计数。

在上表中, 上下文 成员指向上下文对象,该对象包含特定于基线 HD 音频 DDI 的特定实例的信息。 客户端从 IOCTL 获取此基线 HD 音频 DDI。 当客户端函数驱动程序调用 DDI 中的任何例程时,它必须始终将 上下文 成员值指定为第一个调用参数。 上下文信息对客户端是不透明的。 HD 音频总线驱动程序为每个客户端创建一个不同的上下文对象。 当不再需要上下文对象时,客户端将通过调用上表中显示的 InterfaceDereference 例程来释放上下文对象。 如果需要,客户端可以通过调用 InterfaceDereference 例程来创建对对象的其他引用,但当客户端不再需要这些引用时,该客户端负责将其释放。