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

指定合成器迷你埠驅動程式介面的類別標識碼。

Flags

指定驅動程式的一般功能。 這個成員是位欄位元,其值為零或位 OR 的一個或多個下列旗標位:

SYNTH_PC_DLS

驅動程式支援可下載的範例集合, (DLS 層級 1) 。

SYNTH_PC_EXTERNAL

合成器代表與外部硬體的連線。

SYNTH_PC_SOFTWARESYNTH

驅動程式會實作軟體合成器。

SYNTH_PC_MEMORYSIZEFIXED

MemorySize 成員中提供的記憶體大小有效,並且代表以位元組為單位的樣本記憶體數量上限。 當範例記憶體不是系統記憶體時,通常會設定此旗標。

SYNTH_PC_GMINHARDWARE

合成器支持硬體中的一般MIDI音效集。

SYNTH_PC_GSINHARDWARE

synth 支持硬體中的 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]

包含裝置的文字描述。 此成員是 WCHAR 陣列,其中包含以 Null 結尾的字串 (,例如“Microsoft MPU-401”) 。

備註

KSPROPERTY_SYNTH_CAPS get-property 要求會使用 SYNTHCAPS 結構,從 DMus 迷你埠驅動程式擷取合成器裝置的功能。

SYNTH_CAPS類似於DMUS_PORTCAPS結構,如 Microsoft Windows SDK 檔中所述。

在 Windows 驅動程式套件中的 DMusUART 範例驅動程式 (WDK) 中,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) 位於處理轉譯數據或擷取數據的數據路徑上。 這兩個類別標識碼都是在頭檔 Dmusicks.h 中定義。

規格需求

需求
標頭 dmusprop.h (包含 Dmusprop.h)

另請參閱

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS