Freigeben über


Anforderungen für Miniport-Treibereigenschaftenelemente

Dieser Abschnitt enthält eine kurze Einführung in DirectMusic-Eigenschaftenelementanforderungen. Eine vollständige Übersicht über dieses und andere Kernel-Streaming-Konzepte finden Sie unter Kernelstreaming.

DirectMusic-Miniporttreiber müssen Eigenschaftensätze für Audiotreiber verarbeiten. Eine Eigenschaftsanforderung umfasst zwei Teile. Der erste Teil ist der Eigenschaftensatz, der durch die KSPROPERTY-Struktur definiert wird. Der zweite ist ein Datenpuffer, der instance Daten enthält, die für das Eigenschaftselement spezifisch sind.

Die KSPROPERTY-Struktur enthält Folgendes:

Das Flags-Element von KSPROPERTY kann genau eines der folgenden Flags enthalten, um den vom Miniporttreiber angeforderten Vorgang anzugeben:

KSPROPERTY_TYPE_GET
So rufen Sie den Wert des angegebenen Eigenschaftselements ab.

KSPROPERTY_TYPE_SET
So legen Sie den Wert des angegebenen Eigenschaftselements fest.

KSPROPERTY_TYPE_BASICSUPPORT
So bestimmen Sie den Typ der für den Eigenschaftensatz verfügbaren Unterstützung. Bei den in *pvPropertyData zurückgegebenen Daten handelt es sich um ein DWORD mit einem oder beiden KSPROPERTY_TYPE_GET und KSPROPERTY_TYPE_SET, was angibt, welche Vorgänge möglich sind.

Der zweite Teil der Eigenschaftselementanforderung ist die instance Daten. Hierbei handelt es sich um einen Puffer, der zum Übergeben von Daten an den oder vom Miniporttreiber verwendet werden kann. Die Verwendung dieses Puffers hängt davon ab, ob es sich bei der Anforderung um eine SET- oder eine GET-Anforderung handelt:

  • Wenn es sich bei der Anforderung um eine KSPROPERTY_TYPE_SET handelt, werden die instance Daten an den Miniporttreiber gesendet, aber nicht an den Anforderer zurückgegeben.

  • Wenn es sich bei der Anforderung um eine KSPROPERTY_TYPE_GET handelt, werden die instance Daten im Miniporttreiber ausgefüllt und an den Anforderer zurückgegeben.

Eine Eigenschaftselementanforderung kann an einen bestimmten Knoten in der Miniporttreibertopologie weitergeleitet werden. Die Miniporttreibertopologie beschreibt das Layout des Treibers und der zugrunde liegenden Hardware. Innerhalb der Topologie können Knoten sein, auf denen Eigenschaftselemente gesendet werden können, unabhängig davon, ob zum Zeitpunkt der Anforderung Pininstanzen verfügbar sind.

Für die DirectMusic-Wiedergabe muss eine Stecknadel instance erstellt werden. DirectMusic-Daten werden an den Knoten vom Typ KSNODETYPE_DMSYNTH gesendet. Im Folgenden finden Sie ein Beispiel für eine Miniporttreiberverbindung:

  • Verbinden von Stream in mit synth:

    PCFILTER_NODE Pin 0 (out) –> Node 0 Pin 1 (in)

  • Verbinden von synth mit Audio out:

    Knoten 0 Pin 0 (out) –> PCFILTER_NODE Pin 1 (in)

Die unterstützten Datenformate sind ein Datenbereich, der angibt, in welchem Format eine Pin Daten empfangen kann.

Das DirectMusic-Format (STATIC_KSDATAFORMAT_SUBTYPE_DIRECTMUSIC) muss in der Topologie des Miniporttreibers definiert werden, damit DirectMusic seine Daten an den Miniporttreiber senden kann. Dieses Format wird durch die DMUS_EVENTHEADER-Struktur (siehe Microsoft Windows SDK Dokumentation) in dmusbuff.h definiert. Wenn der Miniporttreiber angibt, dass er diesen bestimmten Datenbereich unterstützt, kann DirectMusic diesen Datenbereich für den Benutzer verfügbar machen (über eine Pin am Port selbst).