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
合成器支持硬件中的罗兰 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 结尾的字符串的 WCHAR 数组, (例如“Microsoft MPU-401”) 。
注解
KSPROPERTY_SYNTH_CAPS get-property 请求使用 SYNTHCAPS 结构从 DMus 微型端口驱动程序检索合成器设备的功能。
SYNTH_CAPS类似于Microsoft Windows SDK文档中所述的DMUS_PORTCAPS结构。
在 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 中定义。
要求
要求 | 值 |
---|---|
Header | dmusprop.h (包括 Dmusprop.h) |