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;
Membri
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 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
La dimensione di memoria specificata nel membro MemorySize è valida e rappresenta 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 suono MIDI generale impostato 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 dei gruppi di canali. Ciò impedisce di sprecare memoria scaricando diverse copie dello stesso esempio di DLS, una per gruppo di canali.
MaxVoices
Specifica il numero massimo di voci supportate dal dispositivo di rendering. Se il gestore proprietà non è in grado di fornire 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 proprietà non è in grado di fornire 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 di flag seguenti:
SYNTH_EFFECT_REVERB
Il dispositivo di rendering può produrre effetto riverbero.
SYNTH_EFFECT_CHORUS
Il dispositivo di rendering può produrre effetto coro.
SYNTH_EFFECT_DELAY
Il dispositivo di rendering può produrre effetti di 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".
Osservazioni
La KSPROPERTY_SYNTH_CAPS richiesta get-property 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 di Microsoft Windows SDK.
Nel driver di esempio DMusUART in Windows Driver Kit (WDK), il gestore della 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 0xFFFFFFFF indicano che il gestore non ha modo di conoscere l'effettivo MaxVoices e MaxAudioChannels limiti perché dipendono completamente da qualsiasi sintetizzatore esterno che si verifica per essere connesso all'UART. Altrove nel codice, ma non illustrato nell'esempio precedente, il gestore della proprietà DMusUART imposta il guid membro della struttura SYNTHCAPS su CLSID_MiniportDriverDMusUART o CLSID_MiniportDriverDMusUARTCapture. Quello che il guid membro è impostato su dipende dal fatto che il nodo di destinazione (di tipo KSNODETYPE_SYNTHESIZER) per la richiesta di proprietà si trovi su un percorso dati che gestisce il rendering dei dati o l'acquisizione di dati. Entrambi gli ID classe sono definiti nel file di intestazione Dmusicks.h.
Fabbisogno
Requisito | Valore |
---|---|
intestazione | dmusprop.h (include Dmusprop.h) |