音频属性请求

Microsoft Windows 驱动程序模型 (WDM) 音频驱动程序的客户端可以将 KS 属性的请求发送到该驱动程序实例化的 KS 筛选器和引脚。 例如,用户模式客户端可以通过调用 DeviceIoControl 函数(请参阅 Microsoft Windows SDK 文档)来发送 KS 属性请求,其 I/O 控制代码为 IOCTL_KS_PROPERTY。 此函数将包含属性请求的 IRP 发送到指定的筛选器或引脚对象。

音频驱动程序支持属性(KSPROPERTY_TYPE_GET、KSPROPERTY_TYPE_SET 和 KSPROPERTY_TYPE_BASICSUPPORT)上的获取、设置和基本支持请求。 有关详细信息,请参阅音频驱动程序属性集

客户端可以发送三种属性的请求:筛选器属性、引脚属性和节点属性。 有关详细信息,请参阅筛选器、引脚和节点属性

向筛选器对象发送筛选器属性请求时,客户端按其实例句柄指定目标筛选器(请参阅筛选器工厂)。 同样,向引脚对象发送引脚属性请求时,目标引脚由其实例句柄指定(请参阅引脚工厂)。 任一类型的请求都包含指定以下内容的 KSPROPERTY 结构:

  • 标识属性集的 GUID

  • 标识指定属性集中的属性项的索引

  • 指示属性请求类型(获取、设置或基本支持)的标志

相关属性聚集在一起,形成属性集。 特定属性由其属性集和指定其在该集合中的位置的索引标识。

节点属性请求包含 KSNODEPROPERTY 结构,该结构结合了 KSPROPERTY 结构和节点 ID。 根据节点属性,属性请求的目标是筛选器实例或引脚实例。

如果筛选器可以创建特定节点类型的多个实例,则请求的目标由引脚句柄指定。 句柄用于标识节点实例所在数据路径开头或末尾的引脚实例。 如果筛选器包含 SUM 或 MUX 节点(请参阅 KSNODETYPE_SUMKSNODETYPE_MUX),则适用以下规则:

  • 如果该属性属于位于接收器(输入)引脚下游以及 SUM 或 MUX 节点上游的节点,则属性请求将发送到接收器引脚。

  • 如果该属性属于位于 SUM 或 MUX 节点下游以及源(输出)引脚上游的节点,则属性请求将发送到源引脚。 (此外,SUM 或 MUX 节点的属性请求将发送到源引脚。)

使用这些约定,可以唯一标识特定数据路径上的特定节点。

有关使用混音器 API 遍历数据路径中的节点的信息,请参阅从内核流式处理拓扑到音频混音器 API 的转换