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值表示处理程序无法知道实际的 MaxVoicesMaxAudioChannels 限制,因为它们完全依赖于恰好连接到 UART 的任何外部合成器。 在代码中的其他位置,DMusUART 属性处理程序将 SYNTHCAPS 结构的 Guid 成员设置为 CLSID_MiniportDriverDMusUARTCLSID_MiniportDriverDMusUARTCaptureGuid 成员设置为的节点取决于属性请求KSNODETYPE_SYNTHESIZER) 类型的目标节点 (是否位于处理呈现数据或捕获数据的数据路径上。 这两个类 ID 都在头文件 Dmusicks.h 中定义。

要求

要求
Header dmusprop.h (包括 Dmusprop.h)

另请参阅

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS