次の方法で共有


KSPROCESSPIN 構造体 (ks.h)

KSPROCESSPIN 構造体は、特定のピンのプロセス状態を記述します。

構文

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;

メンバーズ

Pin

KSPROCESSPIN 構造体が記述している KSPIN 構造体へのポインター。 構造内のすべてのものが、この KSPIN を参照します。

StreamPointer

現在の入力場所にある入力ストリーム、または現在の出力場所にある出力ストリームを指す KSSTREAM_POINTER 構造体へのポインター。 これは、たとえば、ピンを出力して、関連付けられた KSSTREAM_HEADER に情報をスタンプするために使用できます (ProcessPin->StreamPointer->StreamHeader->Flags=...)。

InPlaceCounterpart

KSPROCESSPIN 構造体へのポインター。 この KSPROCESSPIN が インプレース 変換の一部でない場合、AVStream は InPlaceCounterpart NULL 設定します。 この KSPROCESSPIN がインプレース変換への入力である場合、inPlaceCounterpart 変換の出力プロセス ピンを指します。 この KSPROCESSPIN がインプレース変換の出力である場合、InPlaceCounterpart は変換の入力プロセス ピンを指します。

DelegateBranch

KSPROCESSPIN 構造体へのポインター。 この KSPROCESSPIN から出てくるフレームが分割され、複数のシンク ピンに送信され、分割によってデータ コピーが発生しない場合 (つまり、分割は読み取り専用の方法でフレームを送信し、すべての分割ピン インスタンスが同じパイプ内にある場合)、DelegateBranch はプロセス ピンの最初のインスタンスを指します。 スプリッターは、以外の NULLDelegateBranchを持つプロセス ピンを自動的に処理します。

CopySource

KSPROCESSPIN 構造体へのポインター。 このプロセス ピンから出てくるフレームが分割され、データ コピーを引き起こす方法 (つまり、ダウンストリーム フィルターの 1 つがインプレース変換を使用してデータ フレームを変更する) 方法で複数のシンク ピンに送信される場合、CopySource は、フレームのコピー元のプロセス ピンを指します。 スプリッターは、以外の NULLCopySourceを持つプロセス ピンを自動的に処理します。

Data

バッファーへのポインター。 このプロセス エントリで記述されたピンが入力ピンの場合、データ は、入力する次の使用可能なデータ バイトを指します。 このプロセス エントリによって記述されるピンが出力ピンの場合、データ は、処理されたデータが配置される出力バッファーを指します。

BytesAvailable

このメンバーは、Dataで使用できるデータのバイト数を指定します。

BytesUsed

このメンバーは、プロセス関数によって使用されたこのデータ フレームのバイト数を指定します。 AVStream ドライバーは、このメンバーが読み取りまたは書き込みを行った量を更新するように設定する必要があります。

Flags

この KSPROCESSPIN が入力ピンの場合、このメンバーには、関連する KSSTREAM_HEADER 構造体からのフラグのコピーが含まれます。

Terminate

このメンバーは、プロセス ディスパッチの完了後に、現在のデータ フレームをダウンストリームに送信する必要があるかどうかを示します。 TRUE 場合、すべてのデータが消費されていない場合でも、フレームはダウンストリームに送信されます。 FALSE 場合、フレームはすべてのデータが使用されるまで解放されません。

備考

KSPROCESSPIN 構造体は、フィルター中心の処理 モデルで使用されます。 この構造を使用すると、特定の入力ピン上のデータにアクセスしたり、処理されたデータを出力ピンに書き出したりできます。

フィルター中心のクライアントのみがプロセス ピンを使用します。 また、NULLDelegateBranch または非NULLCopySource を持つプロセス ピンは、通常、クライアントには問題ありません。 スプリッターは、これらのポインターを使用してプロセス ピンを自動的に処理します。

ほとんどのクライアントは、pin DataBytesAvailableBytesUsedFlags、および Terminate メンバーに関係しています。 データは、ストリームから読み取るか、Data メンバーを介してストリームに書き込むことができます。BytesAvailable は、データ が指す現在のデータ フレーム (バッファー) で使用可能なデータのバイト数 クライアントに通知します。 クライアント ミニドライバーがストリームの読み取りまたはストリームへの書き込みを行う場合、BytesUsed は、使用されたデータのバイト数を反映するように更新する必要があります。 BytesUsed が BytesAvailable と等しくないにもかかわらず、ミニドライバーが現在のフレームで行われる場合は、Terminate フラグ設定できます。 ミニドライバーが処理ディスパッチを終了すると、ポインターが高度になり、フレームが必要に応じて完了します。

必要条件

要件 価値
サポートされる最小クライアント Microsoft Windows XP 以降のオペレーティング システムおよび Microsoft DirectX 8.0 以降のバージョンで使用できます。
ヘッダー ks.h (Ks.h を含む)

関連項目

KSPIN する

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER