SYNTHCAPS-Struktur (dmusprop.h)
Die SYNTHCAPS-Struktur gibt die Funktionen eines Synthesizers an.
Syntax
typedef struct _SYNTHCAPS {
GUID Guid;
DWORD Flags;
DWORD MemorySize;
DWORD MaxChannelGroups;
DWORD MaxVoices;
DWORD MaxAudioChannels;
DWORD EffectFlags;
WCHAR Description[128];
} SYNTHCAPS, *PSYNTHCAPS;
Member
Guid
Gibt die Klassen-ID für die Miniporttreiberschnittstelle des Synthesizers an.
Flags
Gibt die allgemeinen Funktionen des Treibers an. Dieses Element ist ein Bitfeld, dessen Wert entweder 0 oder der bitweise OR eines oder mehrerer der folgenden Flagbits ist:
SYNTH_PC_DLS
Der Treiber unterstützt herunterladbare Beispielsammlungen (DLS Level 1).
SYNTH_PC_EXTERNAL
Der Synth stellt eine Verbindung mit externer Hardware dar.
SYNTH_PC_SOFTWARESYNTH
Der Treiber implementiert einen Softwaresynthesizer.
SYNTH_PC_MEMORYSIZEFIXED
Die im MemorySize-Member angegebene Arbeitsspeichergröße ist gültig und stellt die maximale Menge an Beispielspeicher in Bytes dar. Dieses Flag wird in der Regel festgelegt, wenn der Beispielspeicher kein Systemspeicher ist.
SYNTH_PC_GMINHARDWARE
Der Synth unterstützt den General MIDI Sound Set in Hardware.
SYNTH_PC_GSINHARDWARE
Der Synth unterstützt das Roland GS-Soundset in Hardware.
SYNTH_PC_REVERB
Der Synth unterstützt Reverb.
SYNTH_PC_DLS2
Der Treiber unterstützt herunterladbare Beispielsammlungen (DLS Level 2).
SYNTH_PC_SYSTEMMEMORY
Der Synth kann den Systemspeicher verwenden.
MemorySize
Gibt die Menge des Beispielspeichers auf dem Gerät (in Bytes) an. Dieses Feld sollte den Wert SYNTH_PC_SYSTEMMEMORY enthalten, wenn das Gerät den Systemspeicher für den Beispielspeicher verwendet, ohne dass die Menge des zugewiesenen Arbeitsspeichers eingeschränkt wird.
MaxChannelGroups
Gibt die maximale Anzahl von Kanalgruppen an, die vom Treiber unterstützt werden. Jede Kanalgruppe stellt einen Satz von 16 MIDI-Kanälen dar und verfügt über den gesamten Zustand, den ein MIDI-Hardwaregerät beibehalten würde, einschließlich DLS-, GM-, GS-, XG- oder anderen Modusinformationen. DLS-Downloads sind jedoch treiberbezogen und können von jeder Kanalgruppe verwendet werden. Dadurch wird die Auslastung von Arbeitsspeicher verhindert, indem mehrere Kopien desselben DLS-Beispiels heruntergeladen werden, eine pro Kanalgruppe.
MaxVoices
Gibt die maximale Anzahl von Stimmen an, die das Renderinggerät unterstützt. Wenn der Eigenschaftenhandler keine gültige Zahl für dieses Element angeben kann, sollte er den Member auf (ULONG)-1 festlegen.
MaxAudioChannels
Gibt die maximale Anzahl von Audiokanälen an, die das Renderinggerät unterstützt. Wenn der Eigenschaftenhandler keine gültige Zahl für dieses Element angeben kann, sollte er den Member auf (ULONG)-1 festlegen.
EffectFlags
Gibt die Auswirkungen an, die das Renderinggerät erzeugen kann. Dieses Element ist ein Bitfeld, dessen Wert entweder null oder der bitweise OR der folgenden Flagbits ist:
SYNTH_EFFECT_REVERB
Das Rendergerät kann einen Halleffekt erzeugen.
SYNTH_EFFECT_CHORUS
Das Rendergerät kann einen Choruseffekt erzeugen.
SYNTH_EFFECT_DELAY
Das Rendern eines Geräts kann zu Verzögerungseffekten führen.
Wenn das Gerät keine dieser Funktionen unterstützt, legen Sie diesen Member auf SYNTH_EFFECT_NONE (Null) fest.
Description[128]
Enthält eine Textbeschreibung des Geräts. Bei diesem Member handelt es sich um ein WCHAR-Array, das eine null-beendete Zeichenfolge enthält (z. B. "Microsoft MPU-401").
Hinweise
Die KSPROPERTY_SYNTH_CAPS get-property-Anforderung verwendet die SYNTHCAPS-Struktur, um die Funktionen eines Synthesizergeräts aus einem DMus-Miniporttreiber abzurufen.
SYNTH_CAPS ähnelt der DMUS_PORTCAPS-Struktur, die in der Microsoft Windows SDK-Dokumentation beschrieben wird.
Im DMusUART-Beispieltreiber im Windows Driver Kit (WDK) legt der KSPROPERTY_SYNTH_CAPS-Eigenschaftenhandler die Elemente der SYNTHCAPS-Struktur auf die folgenden Werte fest:
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 diesem Beispiel weisen die 0xFFFFFFFF-Werte darauf hin, dass der Handler keine Möglichkeit hat, die tatsächlichen MaxVoices - und MaxAudioChannels-Grenzwerte zu kennen, da sie vollständig von dem externen Synthesizer abhängig sind, der mit dem UART verbunden ist. An anderer Stelle im Code, aber nicht im vorherigen Beispiel gezeigt, legt der DMusUART-Eigenschaftshandler das Guid-Element der SYNTHCAPS-Struktur auf CLSID_MiniportDriverDMusUART oder CLSID_MiniportDriverDMusUARTCapture fest. Auf welche der Guid-Member festgelegt ist, hängt davon ab, ob der Zielknoten (vom Typ KSNODETYPE_SYNTHESIZER) für die Eigenschaftenanforderung auf einem Datenpfad liegt, der Rendering- oder Erfassungsdaten verarbeitet. Beide Klassen-IDs sind in der Headerdatei Dmusicks.h definiert.
Anforderungen
Anforderung | Wert |
---|---|
Header | dmusprop.h (include Dmusprop.h) |