获取 HDAUDIO_BUS_INTERFACE DDI 对象

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

参数

CONST GUID *InterfaceType

GUID_HDAUDIO_BUS_INTERFACE

USHORT Size

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT Version

0x0100

PINTERFACE Interface

指向 HDAUDIO_BUS_INTERFACE 结构的指针

PVOID InterfaceSpecificData

NULL

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

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

成员

USHORT Size

sizeof(HDAUDIO_BUS_INTERFACE)

USHORT Version

0x0100

PVOID Context

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

PINTERFACE_REFERENCE InterfaceReference

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

PINTERFACE_DEREFERENCE InterfaceDereference

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

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