SYNTHCAPS 结构 (dmusprop.h)
SYNTHCAPS 结构指定合成器的功能。
语法
typedef struct _SYNTHCAPS {
GUID Guid;
DWORD Flags;
DWORD MemorySize;
DWORD MaxChannelGroups;
DWORD MaxVoices;
DWORD MaxAudioChannels;
DWORD EffectFlags;
WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;
成员
Guid
指定合成器微型端口驱动程序接口的类 ID。
Flags
指定驱动程序的一般功能。 此成员是位域,其值为零或位或以下一个或多个标志位的按位 OR:
SYNTH_PC_DLS
驱动程序支持可下载的示例集合(DLS 级别 1)。
SYNTH_PC_EXTERNAL
合成器表示与外部硬件的连接。
SYNTH_PC_SOFTWARESYNTH
驱动程序实现软件合成器。
SYNTH_PC_MEMORYSIZEFIXED
MemorySize 成员中给定的内存大小有效,表示样本内存的最大量(以字节为单位)。 当示例内存不是系统内存时,通常会设置此标志。
SYNTH_PC_GMINHARDWARE
合成器支持硬件中的常规 MIDI 声音集。
SYNTH_PC_GSINHARDWARE
合成器支持硬件中设置的 Roland GS 声音。
SYNTH_PC_REVERB
合成器支持混响。
SYNTH_PC_DLS2
驱动程序支持可下载的示例集合(DLS 级别 2)。
SYNTH_PC_SYSTEMMEMORY
合成器可以使用系统内存。
MemorySize
指定设备上的样本内存量(以字节为单位)。 如果设备将系统内存用于示例内存,但对分配的内存量没有限制,则此字段应包含值SYNTH_PC_SYSTEMMEMORY。
MaxChannelGroups
指定此驱动程序支持的最大通道组数。 每个通道组表示一组 16 个 MIDI 通道,并与它关联了 MIDI 硬件设备将保留的所有状态,其中包括 DLS、GM、GS、XG 或其他模式信息。 但是,DLS 下载是每个驱动程序,可供任何频道组使用。 这可以防止通过下载同一个 DLS 示例的多个副本(每个通道组一个)来浪费内存。
MaxVoices
指定呈现设备支持的最大语音数。 如果属性处理程序无法为此成员提供有效编号,则应将成员设置为 (ULONG)-1。
MaxAudioChannels
指定呈现设备支持的最大音频通道数。 如果属性处理程序无法为此成员提供有效编号,则应将成员设置为 (ULONG)-1。
EffectFlags
指定呈现设备能够产生的效果。 此成员是位域,其值为零或以下标志位的按位 OR:
SYNTH_EFFECT_REVERB
渲染设备可以产生混响效果。
SYNTH_EFFECT_CHORUS
渲染设备可以产生合唱效果。
SYNTH_EFFECT_DELAY
呈现设备可能会产生延迟效果。
如果设备不支持这些功能,请将此成员设置为SYNTH_EFFECT_NONE(零)。
Description[128]
包含设备的文本说明。 此成员是包含以 null 结尾的字符串(例如,“Microsoft MPU-401”)的 WCHAR 数组。
言论
KSPROPERTY_SYNTH_CAPS get-property 请求使用 SYNTHCAPS 结构从 DMus 微型端口驱动程序检索合成器设备的功能。
SYNTH_CAPS类似于 DMUS_PORTCAPS 结构,Microsoft Windows SDK 文档中介绍。
在 Windows 驱动程序工具包 (WDK)中的 DMusUART 示例驱动程序中,KSPROPERTY_SYNTH_CAPS属性处理程序将 SYNTHCAPS 结构的成员设置为以下值:
SYNTHCAPS *caps = (SYNTHCAPS*)pRequest->Value;
...
caps->Flags = SYNTH_PC_EXTERNAL;
caps->MemorySize = 0;
caps->MaxChannelGroups = 1;
caps->MaxVoices = 0xFFFFFFFF; // (ULONG)-1
caps->MaxAudioChannels = 0xFFFFFFFF; // (ULONG)-1
caps->EffectFlags = 0;
在此示例中,0xFFFFFFFF值指示处理程序无法知道实际 MaxVoices,MaxAudioChannels 限制,因为它们完全依赖于任何外部合成器碰巧连接到 UART。 在代码的其他地方,但上述示例中未显示,DMusUART 属性处理程序将 SYNTHCAPS 结构的 Guid 成员设置为 CLSID_MiniportDriverDMusUART 或 CLSID_MiniportDriverDMusUARTCapture。 Guid 成员设置为取决于属性请求的目标节点(类型 KSNODETYPE_SYNTHESIZER)是否位于处理呈现数据或捕获数据的数据路径上。 这两个类 ID 都在头文件 Dmusicks.h 中定义。
要求
要求 | 价值 |
---|---|
标头 | dmusprop.h (包括 Dmusprop.h) |