Anforderungen für Audioeigenschaften

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

Audiotreiber unterstützen Get-, Set- und Basic-Support-Anforderungen für Eigenschaften (KSPROPERTY_TYPE_GET, KSPROPERTY_TYPE_SET und KSPROPERTY_TYPE_BASICSUPPORT). Weitere Informationen finden Sie unter Eigenschaftensätze für Audiotreiber.

Ein Client kann Anforderungen für drei Arten von Eigenschaften senden: Filtereigenschaften, Anhefteigenschaften 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 seines instance Handle an (siehe Filterfactorys). Auf ähnliche Weise wird beim Senden einer Pin-Eigenschaftsanforderung an ein Pinobjekt der Zielpin durch sein instance Handle angegeben (siehe Pin Factorys). 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 (get, set oder basic-support)

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

Eine Node-Property-Anforderung enthält eine KSNODEPROPERTY-Struktur , die eine KSPROPERTY-Struktur und eine Knoten-ID kombiniert. Abhängig von der Node-Eigenschaft ist das Ziel für die Eigenschaftsanforderung entweder ein Filter instance oder ein Pin-instance.

Wenn ein Filter mehrere instance eines bestimmten Knotentyps erstellen kann, wird das Ziel für die Anforderung durch ein Pinhandle angegeben. Das Handle identifiziert die Pin instance am Anfang oder Ende des Datenpfads, in dem sich der Knoten instance befindet. Bei einem Filter, der einen SUM- 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 nach einer Senke (Eingabe)-Pin und Upstream vom SUM- oder MUX-Knoten befindet, wird die Eigenschaftenanforderung an den Senkennadel gesendet.

  • Wenn die Eigenschaft zu einem Knoten gehört, der nach einem SUM- oder MUX-Knoten und Upstream von einem Quell-Pin (Ausgabe)-Pin liegt, wird die Eigenschaftenanforderung an den Quell-Pin gesendet. (Außerdem wird eine Eigenschaftsanforderung für einen SUM- oder MUX-Knoten an den Quell-Pin gesendet.)

Mit diesen Konventionen kann ein bestimmter Knoten in 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.