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 は InPlaceCounterpartNULL に設定します。 この KSPROCESSPIN がインプレース変換への入力である場合、 InPlaceCounterpart は変換の出力プロセス ピンを指します。 この KSPROCESSPIN がインプレース変換の出力である場合、 InPlaceCounterpart は変換の入力プロセス ピンを指します。

DelegateBranch

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

CopySource

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

Data

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

BytesAvailable

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

BytesUsed

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

Flags

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

Terminate

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

注釈

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

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

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

要件

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

こちらもご覧ください

KSPIN

KSPROCESSPIN_INDEXENTRY

KSSTREAM_HEADER

KSSTREAM_POINTER