共用方式為


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

合成器支持在硬體中設定的 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 終止字串的 WCHAR 陣列(例如,“Microsoft MPU-401” )。

言論

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值表示處理程式無法知道實際 MaxVoicesMaxAudioChannels 限制,因為它們完全相依於任何外部合成器碰巧連線到 UART。 在程式代碼的其他地方,但上述範例中未顯示,DMusUART 屬性處理程式會將 SYNTHCAPS 結構的 Guid 成員設定為 CLSID_MiniportDriverDMusUARTCLSID_MiniportDriverDMusUARTCaptureGuid 成員所設定的,取決於屬性要求的目標節點(類型為 KSNODETYPE_SYNTHESIZER),是否位於處理轉譯數據或擷取數據的數據路徑上。 這兩個類別標識碼都定義在頭檔 Dmusicks.h 中。

要求

要求 價值
標頭 dmusprop.h (include Dmusprop.h)

另請參閱

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS