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)

Weitere Informationen

KSNODETYPE_SYNTHESIZER

KSPROPERTY_SYNTH_CAPS