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