Freigeben über


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;

Angehörige

Pin

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

StreamPointer

Ein Zeiger auf eine KSSTREAM_POINTER Struktur, die an der aktuellen Eingabeposition oder an dem Ausgabedatenstrom an der aktuellen Ausgabeposition auf den Eingabedatenstrom zeigt. Dies kann z. B. durch Ausgabe-Pins verwendet werden, um Informationen auf die zugeordneten KSSTREAM_HEADER zu stempeln (ProcessPin->StreamPointer->StreamHeader->Flags=...).

InPlaceCounterpart

Ein Zeiger auf eine KSPROCESSPIN-Struktur. Wenn dieser KSPROCESSPIN nicht Teil einer Transformation ist, legt AVStream InPlaceCounterpart- auf NULL-fest. Wenn es sich bei diesem KSPROCESSPIN um die Eingabe einer Inplace-Transformation handelt, InPlaceCounterpart auf den Ausgabeprozess-Pin für die Transformation zeigt. Wenn dieser KSPROCESSPIN die Ausgabe einer Inplace-Transformation ist, zeigt InPlaceCounterpart auf den Eingabeprozess-Pin für die Transformation.

DelegateBranch

Ein Zeiger auf eine KSPROCESSPIN-Struktur. Wenn Frames, die aus diesem KSPROCESSPIN stammen, geteilt und an mehrere Senkenheften gesendet werden, und die Teilung verursacht keine Datenkopie (d. h. die Unterbrechung sendet die Frames schreibgeschützt, und alle geteilten Pininstanzen befinden sich in derselben Pipe), DelegateBranch verweist auf die erste Instanz des Prozesspins. Der Splitter verarbeitet automatisch alle Prozess-Pins, die einen nichtNULL-DelegateBranch-enthalten.

CopySource

Ein Zeiger auf eine KSPROCESSPIN-Struktur. Wenn Frames, die aus dieser Prozess-Pin stammen, auf eine Weise geteilt und an mehrere Sink-Pins gesendet werden, die eine Datenkopie verursachen (d. h. eines der downstream-Filter ändert den Datenframe mithilfe einer direkten Transformation), CopySource zeigt auf den Prozess-Pin, von dem der Frame kopiert wurde. Der Splitter verarbeitet automatisch alle Prozess-Pins, die einen nichtNULL-CopySource-enthalten.

Data

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

BytesAvailable

Dieses Element gibt an, wie viele Byte daten in Dataverfügbar sind.

BytesUsed

Dieses Element gibt an, wie viele Bytes dieses Datenrahmens von der Prozessfunktion verwendet wurden. AvStream-Treiber sollten dieses Mitglied so festlegen, dass aktualisiert wird, wie viel sie gelesen oder geschrieben haben.

Flags

Dieses Element enthält eine Kopie der Flags aus der relevanten KSSTREAM_HEADER Struktur, wenn es sich bei diesem KSPROCESSPIN um einen Eingabestift handelt.

Terminate

Dieses Element gibt an, ob der aktuelle Datenframe nach Abschluss der Prozessverteilung nachgelagert werden soll. Wenn TRUE, wird der Frame nachgeschaltet, auch wenn nicht alle Daten verbraucht wurden. Wenn FALSE, wird der Frame erst freigegeben, wenn alle Daten verbraucht werden.

Bemerkungen

Die KSPROCESSPIN-Struktur wird in der filterzentrierten Verarbeitung Modell verwendet. Sie können diese Struktur verwenden, um auf Daten auf einem bestimmten Eingabenadel zuzugreifen oder verarbeitete Daten in eine Ausgabenadel zu schreiben.

Nur filterorientierte Clients verwenden Prozess-Pins. Darüber hinaus sind Prozess-Pins, die eine nichtNULLDelegateBranch oder eine nichtNULLCopySource in der Regel nicht für den Client von Bedeutung sind. Der Teiler verarbeitet automatisch Prozess-Pins mit diesen Zeigern.

Die meisten Clients beschäftigen sich mit den Mitgliedern Pin, Data, BytesAvailable, BytesUsed, Flagsund Terminate. Daten können aus dem Datenstrom gelesen oder über das mitglied Data in den Datenstrom geschrieben werden; BytesAvailable teilt dem Client mit, wie viele Byte daten im aktuellen Datenframe (Puffer) verfügbar sind, auf die Daten verweist. Wenn der Client-Minidriver aus dem Datenstrom liest oder in den Datenstrom schreibt, sollte BytesUsed aktualisiert werden, um anzugeben, wie viele Bytes von Daten verbraucht wurden. Das flag Terminate kann festgelegt werden, wenn der Minidriver mit dem aktuellen Frame erfolgt, obwohl BytesUsed nicht gleich BytesAvailableist. Nachdem der Minidriver die Verarbeitungsverteilung beendet hat, werden Zeiger erweitert, und Frames werden entsprechend abgeschlossen.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Microsoft Windows XP und höheren Betriebssystemen und in Microsoft DirectX 8.0 und höheren Versionen.
Header- ks.h (enthalten Ks.h)

Siehe auch

KSPIN-

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER