PCPROPERTY_ITEM-Struktur (portcls.h)

Die PCPROPERTY_ITEM-Struktur beschreibt eine Eigenschaft, die von einem bestimmten Filter, Pin oder Knoten unterstützt wird.

Syntax

typedef struct {
  const GUID            *Set;
  ULONG                 Id;
  ULONG                 Flags;
  PCPFNPROPERTY_HANDLER Handler;
} PCPROPERTY_ITEM, *PPCPROPERTY_ITEM;

Member

Set

Gibt den Eigenschaftensatz an. Dieser Member ist ein Zeiger auf eine GUID, die den Eigenschaftensatz eindeutig identifiziert. Weitere Informationen finden Sie in der Liste der EIGENSCHAFTEN-GUIDs unter Eigenschaftensätze für Audiotreiber.

Id

Gibt die Eigenschafts-ID an. Dieser Member identifiziert ein Eigenschaftselement innerhalb des Eigenschaftensatzes. Wenn der Eigenschaftensatz N-Elemente enthält, sind gültige Eigenschafts-IDs ganze Zahlen im Bereich von 0 bis N-1.

Flags

Gibt die Typen von Eigenschaftenanforderungen an, die vom Treiber unterstützt werden. Legen Sie dieses Element auf das bitweise OR einiger oder aller Flagbits fest, die in der folgenden Tabelle angezeigt werden.

Flagbits Typ der Eigenschaftsanforderung
PCPROPERTY_ITEM_FLAG_GET Anforderung zum Abrufen der aktuellen Eigenschaftsdateneinstellung.
PCPROPERTY_ITEM_FLAG_SET Anforderung zum Festlegen der aktuellen Eigenschaftsdateneinstellung.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Fordern Sie die Standardwerte des Treibers für die Eigenschaftendaten an.
PCPROPERTY_ITEM_FLAG_BASICSUPPORT Anforderung für grundlegende Unterstützung, die angibt, welche Anforderungstypen der Treiber für diese Eigenschaft verarbeitet, sowie den gültigen Datentyp und die gültigen Bereiche für die Eigenschaftendaten.
PCPROPERTY_ITEM_FLAG_SERIALIZESIZE Fordern Sie die Größe der Eigenschaftsdaten für diese Eigenschaft an, wenn sie als Teil einer KSPROPERTY_TYPE_SERIALIZESET-Anforderung serialisiert wird.
PCPROPERTY_ITEM_FLAG_SERIALIZERAW Anforderung, diese Eigenschaft treiberabhängig zu serialisieren. Dieser Vorgang ist der Umgekehrte von PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW.
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW Anforderung, diese Eigenschaft treiberabhängig zu entialisieren. Dieser Vorgang ist der Umgekehrte von PCPROPERTY_ITEM_FLAG_SERIALIZERAW.
PCPROPERTY_ITEM_FLAG_SERIALIZE PCPROPERTY_ITEM_FLAG_SERIALIZERAW | PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW | PCPROPERTY_ITEM_FLAG_SERIALIZESIZE

Handler

Zeiger auf die Eigenschaftshandlerroutine. Dieser Member ist ein Funktionszeiger vom Typ PCPFNPROPERTY_HANDLER, der wie folgt definiert ist:

  typedef NTSTATUS (*PCPFNPROPERTY_HANDLER)
  (
      IN PPCPROPERTY_REQUEST  PropertyRequest
  );

Weitere Informationen finden Sie im abschnitt "Hinweise".

Hinweise

Die PCPROPERTY_ITEM-Struktur gibt ein bestimmtes Eigenschaftselement in einer Automatisierungstabelle an. Die PCAUTOMATION_TABLE-Struktur verweist auf ein Array von PCPROPERTY_ITEM Strukturen.

Beim Aufrufen der Handlerroutine übergibt der Aufrufer einen einzelnen Aufrufparameter, bei dem es sich um einen Zeiger auf eine PCPROPERTY_REQUEST-Struktur handelt. Diese Struktur wird vom Aufrufer zugeordnet, und der Aufrufer gibt sie unter einer der folgenden Bedingungen frei:

  1. Wenn die Handlerroutine status Code außer STATUS_PENDING zurückgibt, gibt der Aufrufer die -Struktur frei. In diesem Fall sollte der Miniporttreiber nicht versuchen, auf die Struktur zuzugreifen, nachdem die Handlerroutine zurückgegeben wurde.
  2. Die Handlerroutine kann auch STATUS_PENDING zurückgeben. In diesem Fall ist der Miniporttreiber verpflichtet , PcCompletePendingPropertyRequest zu einem späteren Zeitpunkt aufzurufen, um die ausstehende Eigenschaftsanforderung abzuschließen. Die PcCompletePendingPropertyRequest-Funktion gibt die Struktur frei. Nach dem Aufruf von PcCompletePendingPropertyRequest sollte der Miniporttreiber nicht versuchen, auf die Struktur zuzugreifen.
Wenn der Miniporttreiber versucht, nach der Freigabe auf die Struktur zuzugreifen, führt diese Aktion wahrscheinlich zu einer Fehlerüberprüfung oder zu einer Beschädigung des Arbeitsspeichers eines anderen Treibers.

Weitere Informationen zur Serialisierung und Rohserialisierung eines Eigenschaftensatzes finden Sie unter KS-Eigenschaften.

Anforderungen

Anforderung Wert
Header portcls.h (portcls.h einschließen)

Weitere Informationen

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest