微型端口驱动程序属性项请求
本部分简要介绍了 DirectMusic 属性项请求。 在内核流式处理中,可以找到此概念和其他内核流式处理概念的完整概述。
DirectMusic 微型端口驱动程序必须处理音频驱动程序属性集。 属性请求分为两个部分。 第一部分是由 KSPROPERTY 结构定义的属性集。 第二个部分是包含特定于属性项的实例数据的数据缓冲区。
KSPROPERTY 结构包含以下项:
指定集的预定义 GUID(如 KSPROPSETID_Synth_Dls)。
指定集中的属性项的项 ID(如 KSPROPERTY_SYNTH_DLS_DOWNLOAD)。
指定所请求操作的标志。
KSPROPERTY 的 Flags 成员可能包含以下标志之一,以指定微型端口驱动程序请求的操作:
KSPROPERTY_TYPE_GET
检索给定属性项的值。
KSPROPERTY_TYPE_SET
设置给定属性项的值。
KSPROPERTY_TYPE_BASICSUPPORT
确定可用于属性集的支持类型。 在 *pvPropertyData 中返回的数据是一个 DWORD,其中包含 KSPROPERTY_TYPE_GET 和 KSPROPERTY_TYPE_SET 中的一个,或者同时包含这两个,以指示可以执行哪些操作。
属性项请求的第二部分是实例数据,这是一个缓冲区,可用于将数据传入或传出微型端口驱动程序。 此缓冲区的使用方式取决于请求是 SET 还是 GET:
如果请求是 KSPROPERTY_TYPE_SET,则将实例数据发送到微型端口驱动程序,但不会返回给请求者。
如果请求是 KSPROPERTY_TYPE_GET,则将在微型端口驱动程序中填写实例数据,并将其返回给请求者。
可以将属性项请求定向到微型端口驱动程序拓扑中的特定节点。 微型端口驱动程序拓扑描述驱动程序和基础硬件的布局。 在拓扑中,可以是可以发送属性项的节点,以及请求时是否有可用的引脚实例。
必须为 DirectMusic 播放创建引脚实例。 DirectMusic 数据将发送到 KSNODETYPE_DMSYNTH 类型的节点。 以下是微型端口驱动程序连接的示例:
将流输入连接到合成器:
PCFILTER_NODE 引脚 0(输出)-> 节点 0 引脚 1(输入)
将合成器连接到音频输出:
节点 0 引脚 0(输出)-> PCFILTER_NODE 引脚 1(输入)
支持的数据格式是一个数据范围,用于指定引脚可以用于接收数据的格式。
必须在微型端口驱动程序的拓扑中定义 DirectMusic 格式 (STATIC_KSDATAFORMAT_SUBTYPE_DIRECTMUSIC),以便 DirectMusic 可以将数据发送到微型端口驱动程序。 此格式由 dmusbuff.h 中的 DMUS_EVENTHEADER 结构定义(请参阅 Microsoft Windows SDK 文档)。 当微型端口驱动程序指定它支持此特定数据范围时,DirectMusic 可以将该数据范围公开给用户(通过端口本身上的引脚)。