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