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) |