Freigeben über


Audio-Eigenschaftsanforderungen

Clients eines Microsoft Windows Driver Model (WDM)-Audiotreibers können Anforderungen für KS-Eigenschaften an die KS-Filter und Pins senden, die der Treiber instanziiert hat. Beispielsweise kann ein Benutzermodusclient eine KS-Eigenschaftsanforderung senden, indem er die DeviceIoControl-Funktion aufruft (siehe die Microsoft Windows SDK-Dokumentation) mit einem I/O-Steuercode von IOCTL_KS_PROPERTY. Diese Funktion sendet ein IRP mit der Eigenschaftsanforderung an das angegebene Filter- oder Pinobjekt.

Audiotreiber unterstützen die Anforderung von Abrufen, Festlegen und grundlegender Unterstützung für Eigenschaften (KSPROPERTY_TYPE_GET, KSPROPERTY_TYPE_SET und KSPROPERTY_TYPE_BASICSUPPORT). Weitere Informationen finden Sie unter Audio Drivers Property Sets.

Ein Client kann Anforderungen für drei Arten von Eigenschaften senden: Filtereigenschaften, Pineigenschaften und Knoteneigenschaften. Weitere Informationen finden Sie unter Filter-, Pin- und Node-Eigenschaften.

Beim Senden einer Filtereigenschaftsanforderung an ein Filterobjekt gibt der Client den Zielfilter anhand des Instanzhandles an (siehe Filterfabriken). Ebenso wird beim Senden einer Pin-Eigenschaftsanforderung an ein Pin-Objekt das Ziel-Pin durch das Instanzhandle angegeben (siehe Pin-Factories). Jeder Anforderungstyp enthält eine KSPROPERTY-Struktur , die Folgendes angibt:

  • Eine GUID, die den Eigenschaftensatz identifiziert

  • Ein Index, der ein Eigenschaftselement innerhalb des angegebenen Eigenschaftensatzes identifiziert

  • Flags, die den Typ der Eigenschaftsanforderung angeben (Abruf, Festlegung oder Grundunterstützung).

Verwandte Eigenschaften werden zusammengetragen, um einen Eigenschaftensatz zu bilden. Eine bestimmte Eigenschaft wird durch den Eigenschaftensatz und einen Index identifiziert, der seine Position innerhalb dieses Satzes angibt.

Eine Knoteneigenschaftsanforderung enthält eine KSNODEPROPERTY-Struktur , die eine KSPROPERTY-Struktur und eine Knoten-ID kombiniert. Je nach Knoteneigenschaft ist das Ziel für die Eigenschaftsanforderung entweder eine Filterinstanz oder eine Pininstanz.

Wenn ein Filter mehrere Instanzen eines bestimmten Knotentyps erstellen kann, wird das Ziel für die Anforderung durch ein Pinhandle angegeben. Das Handle identifiziert die Pininstanz am Anfang oder Ende des Datenpfads, auf dem sich die Knoteninstanz befindet. Bei einem Filter, der einen SUMME- oder MUX-Knoten enthält (siehe KSNODETYPE_SUM und KSNODETYPE_MUX), gelten die folgenden Regeln:

  • Wenn die Eigenschaft zu einem Knoten gehört, der sich nachgelagert von einem Sink-Pin (Eingabe) und vorgelagert vom SUM- oder MUX-Knoten befindet, wird die Eigenschaftsanfrage an den Sink-Pin gesendet.

  • Wenn die Eigenschaft zu einem Knoten gehört, der sich stromabwärts von einem SUM- oder MUX-Knoten und stromaufwärts von einem Ausgangspin befindet, wird die Anfrage an den Ausgangspin gesendet. (Außerdem wird eine Eigenschaftsanfrage für einen SUM- oder MUX-Knoten an den Quell-Pin gesendet.)

Bei diesen Konventionen kann ein bestimmter Knoten auf einem bestimmten Datenpfad eindeutig identifiziert werden.

Informationen zur Verwendung der Mixer-API zum Durchlaufen der Knoten in einem Datenpfad finden Sie unter Kernel Streaming Topology to Audio Mixer API Translation.