KSPROCESSPIN-Struktur (ks.h)

Die KSPROCESSPIN-Struktur beschreibt den Prozesszustand eines bestimmten Pins.

Syntax

typedef struct _KSPROCESSPIN {
  PKSPIN            Pin;
  PKSSTREAM_POINTER StreamPointer;
  PKSPROCESSPIN     InPlaceCounterpart;
  PKSPROCESSPIN     DelegateBranch;
  PKSPROCESSPIN     CopySource;
  PVOID             Data;
  ULONG             BytesAvailable;
  ULONG             BytesUsed;
  ULONG             Flags;
  BOOLEAN           Terminate;
} KSPROCESSPIN, *PKSPROCESSPIN;

Member

Pin

Ein Zeiger auf eine KSPIN-Struktur , die von der KSPROCESSPIN-Struktur beschrieben wird. Alles in der -Struktur bezieht sich auf diesen KSPIN.

StreamPointer

Ein Zeiger auf eine KSSTREAM_POINTER Struktur, die auf den Eingabedatenstrom am aktuellen Eingabespeicherort oder auf den Ausgabedatenstrom am aktuellen Ausgabespeicherort zeigt. Dies kann z. B. durch Ausgabepins verwendet werden, um Informationen auf die zugeordnete KSSTREAM_HEADER (ProcessPin-StreamPointer-StreamHeader-Flags>>>=...) zu stempeln.

InPlaceCounterpart

Ein Zeiger auf eine KSPROCESSPIN-Struktur. Wenn dieser KSPROCESSPIN nicht Teil einer Inplace-Transformation ist, legt AVStream InPlaceCounterpart auf NULL fest. Wenn dieser KSPROCESSPIN die Eingabe für eine Inplacetransformation ist, verweist InPlaceCounterpart auf den Ausgabeprozesspin für die Transformation. Wenn dieser KSPROCESSPIN die Ausgabe einer Inplacetransformation ist, verweist InPlaceCounterpart auf den Eingabeprozesspin für die Transformation.

DelegateBranch

Ein Zeiger auf eine KSPROCESSPIN-Struktur. Wenn Frames, die aus diesem KSPROCESSPIN stammen, aufgeteilt und an mehrere Senkenpins gesendet werden, und die Aufteilung keine Datenkopie verursacht (d. h. die Aufteilung sendet die Frames schreibgeschützt, und alle Split-Pin-Instanzen befinden sich in derselben Pipe), DelegateBranch zeigt auf die erste instance des Prozesspins. Der Splitter verarbeitet automatisch alle Prozesspins, die über eineDelegateBranch-Nicht-NULL-Klasse verfügen.

CopySource

Ein Zeiger auf eine KSPROCESSPIN-Struktur. Wenn Frames, die aus diesem Prozesspin stammen, aufgeteilt und auf eine Weise an mehrere Senkenpins gesendet werden, die eine Datenkopie verursacht (d. h. einer der downstream-Filter ändert den Datenrahmen mithilfe einer direkten Transformation), zeigt CopySource auf den Prozesspin, aus dem der Frame kopiert wurde. Der Splitter verarbeitet automatisch alle Prozesspins, die über eine CopySource ungleich NULL verfügen.

Data

Ein Zeiger auf einen Puffer. Wenn es sich bei der durch diesen Prozesseintrag beschriebenen Pin um einen Eingabenadel handelt, verweist Data auf das nächste verfügbare Byte von Daten, die eingegeben werden sollen. Wenn der durch diesen Prozesseintrag beschriebene Pin ein Ausgabepin ist, verweist Data auf einen Ausgabepuffer, in dem die verarbeiteten Daten platziert werden.

BytesAvailable

Dieser Member gibt an, wie viele Bytes daten in Daten verfügbar sind.

BytesUsed

Dieser Member gibt an, wie viele Bytes dieses Datenrahmens von der Prozessfunktion verwendet wurden. AVStream-Treiber sollten dieses Element so festlegen, dass der Lese- oder Schreibaufwand aktualisiert wird.

Flags

Dieser Member enthält eine Kopie der Flags aus der relevanten KSSTREAM_HEADER-Struktur , wenn es sich bei diesem KSPROCESSPIN um einen Eingabenadel handelt.

Terminate

Dieser Member gibt an, ob der aktuelle Datenrahmen nach Abschluss des Prozessversands nachgeschaltet werden soll. True gibt an, dass der Frame auch dann nachgeschaltet wird, wenn nicht alle Daten genutzt wurden. False gibt an, dass der Frame erst freigegeben wird, wenn alle Daten genutzt werden.

Hinweise

Die KSPROCESSPIN-Struktur wird im filterzentrierten Verarbeitungsmodell verwendet. Sie können diese Struktur verwenden, um auf Daten auf einem bestimmten Eingabepin zuzugreifen oder verarbeitete Daten an einen Ausgabepin zu schreiben.

Nur filterzentrierte Clients verwenden Prozesspins. Darüber hinaus sind Prozesspins, die nicht NULLDelegateBranch oder nicht NULLCopySource aufweisen, für den Client in der Regel nicht von Bedeutung. Der Splitter verarbeitet automatisch Prozesspins mit diesen Zeigern.

Die meisten Clients befassen sich mit den Membern Pin, Data, BytesAvailable, BytesUsed, Flags und Terminate. Daten können aus dem Stream gelesen oder über den Data-Member in den Stream geschrieben werden. BytesAvailable teilt dem Client mit, wie viele Bytes daten im aktuellen Datenrahmen (Puffer) verfügbar sind, auf den Data verweist. Wenn der Client-Minidriver aus dem Stream liest oder in diesen schreibt, sollte BytesUsed aktualisiert werden, um anzugeben, wie viele Bytes der Daten verbraucht wurden. Das Flag Terminate kann festgelegt werden, wenn der Minidriver mit dem aktuellen Frame ausgeführt wird, obwohl BytesUsed nicht gleich BytesAvailable ist. Nachdem der Minidriver die Verarbeitungsverteilung beendet hat, werden Zeiger erweitert, und die Frames werden nach Bedarf abgeschlossen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Microsoft Windows XP und höheren Betriebssystemen sowie in Microsoft DirectX 8.0 und höheren Versionen.
Kopfzeile ks.h (ks.h einschließen)

Weitere Informationen

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER