Struttura SYNTHCAPS (dmusprop.h)
La struttura SYNTHCAPS specifica le funzionalità di un sintetizzatore.
Sintassi
typedef struct _SYNTHCAPS {
GUID Guid;
DWORD Flags;
DWORD MemorySize;
DWORD MaxChannelGroups;
DWORD MaxVoices;
DWORD MaxAudioChannels;
DWORD EffectFlags;
WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;
Members
Guid
Specifica l'ID classe per l'interfaccia del driver miniport del sintetizzatore.
Flags
Specifica le funzionalità generali del driver. Questo membro è un campo di bit il cui valore è zero o l'OR bit per bit di uno o più dei bit di flag seguenti:
SYNTH_PC_DLS
Il driver supporta raccolte di esempi scaricabili (DLS Livello 1).
SYNTH_PC_EXTERNAL
Il synth rappresenta una connessione all'hardware esterno.
SYNTH_PC_SOFTWARESYNTH
Il driver implementa un sintetizzatore software.
SYNTH_PC_MEMORYSIZEFIXED
Le dimensioni di memoria specificate nel membro MemorySize sono valide e rappresentano la quantità massima di memoria campione in byte. Questo flag viene in genere impostato quando la memoria di esempio non è memoria di sistema.
SYNTH_PC_GMINHARDWARE
Il synth supporta il set di suoni MIDI generale nell'hardware.
SYNTH_PC_GSINHARDWARE
Il synth supporta il suono Roland GS impostato nell'hardware.
SYNTH_PC_REVERB
Il synth supporta il riverbero.
SYNTH_PC_DLS2
Il driver supporta raccolte di esempi scaricabili (DLS Livello 2).
SYNTH_PC_SYSTEMMEMORY
Il synth può usare la memoria di sistema.
MemorySize
Specifica la quantità di memoria di esempio nel dispositivo (in byte). Questo campo deve contenere il valore SYNTH_PC_SYSTEMMEMORY se il dispositivo usa la memoria di sistema per la memoria di esempio senza limitazioni sulla quantità di memoria allocata.
MaxChannelGroups
Specifica il numero massimo di gruppi di canali supportati da questo driver. Ogni gruppo di canali rappresenta un set di 16 canali MIDI e ha associato a esso tutto lo stato che un dispositivo hardware MIDI manterrà, che include DLS, GM, GS, XG o altre informazioni sulla modalità. I download DLS, tuttavia, sono per driver e possono essere usati da uno qualsiasi dei gruppi di canali. Ciò impedisce di sprecare memoria scaricando diverse copie dello stesso esempio di DLS, una per ogni gruppo di canali.
MaxVoices
Specifica il numero massimo di voci supportate dal dispositivo di rendering. Se il gestore della proprietà non è in grado di specificare un numero valido per questo membro, deve impostare il membro su (ULONG)-1.
MaxAudioChannels
Specifica il numero massimo di canali audio supportati dal dispositivo di rendering. Se il gestore della proprietà non è in grado di specificare un numero valido per questo membro, deve impostare il membro su (ULONG)-1.
EffectFlags
Specifica gli effetti che il dispositivo di rendering è in grado di produrre. Questo membro è un campo di bit il cui valore è zero o or bit per bit dei bit del flag seguente:
SYNTH_EFFECT_REVERB
Il dispositivo di rendering può produrre effetto riverbero.
SYNTH_EFFECT_CHORUS
Il dispositivo di rendering può produrre un effetto coro.
SYNTH_EFFECT_DELAY
Il dispositivo di rendering può produrre un effetto ritardo.
Se il dispositivo supporta nessuna di queste funzionalità, impostare questo membro su SYNTH_EFFECT_NONE (zero).
Description[128]
Contiene una descrizione testuale del dispositivo. Questo membro è una matrice WCHAR contenente una stringa con terminazione Null, ad esempio "Microsoft MPU-401".
Commenti
La richiesta get-property KSPROPERTY_SYNTH_CAPS usa la struttura SYNTHCAPS per recuperare le funzionalità di un dispositivo sintetizzatore da un driver miniport DMus.
SYNTH_CAPS è simile alla struttura DMUS_PORTCAPS, descritta nella documentazione Microsoft Windows SDK.
Nel driver di esempio DMusUART in Windows Driver Kit (WDK), il gestore proprietà KSPROPERTY_SYNTH_CAPS imposta i membri della struttura SYNTHCAPS sui valori seguenti:
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;
In questo esempio, i valori di 0xFFFFFFFF indicano che il gestore non ha modo di conoscere i limiti effettivi di MaxVoices e MaxAudioChannels perché dipendono completamente da qualsiasi sintetizzatore esterno sia connesso all'UART. Altrove nel codice, ma non illustrato nell'esempio precedente, il gestore della proprietà DMusUART imposta il membro Guid della struttura SYNTHCAPS su CLSID_MiniportDriverDMusUART o CLSID_MiniportDriverDMusUARTCapture. Il membro Guid è impostato su dipende dal fatto che il nodo di destinazione (di tipo KSNODETYPE_SYNTHESIZER) per la richiesta di proprietà si trovi in un percorso dati che gestisce i dati di rendering o di acquisizione. Entrambi gli ID di classe sono definiti nel file di intestazione Dmusicks.h.
Requisiti
Requisito | Valore |
---|---|
Intestazione | dmusprop.h (include Dmusprop.h) |