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 はプロセス ピンの最初のインスタンスを指します。 スプリッターは、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 を持つプロセス ピンは、通常、クライアントには問題ありません。 スプリッターは、これらのポインターを使用してプロセス ピンを自動的に処理します。
ほとんどのクライアントは、 メンバーの Pin、 Data、 BytesAvailable、 BytesUsed、 Flags、 Terminate に関係しています。 データは、ストリームから読み取るか、 データ メンバーを介してストリームに書き込むことができます。 BytesAvailable は、データ が指す 現在のデータ フレーム (バッファー) で使用可能なデータのバイト数をクライアントに通知します。 クライアント ミニドライバーがストリームの読み取りまたはストリームへの書き込みを行う場合は、バイト数を反映するように BytesUsed を更新する必要があります。 BytesUsed が BytesAvailable と等しくないにもかかわらず、ミニドライバーが現在のフレームで行われる場合は、Terminate フラグを設定できます。 ミニドライバーが処理ディスパッチを終了すると、ポインターが高度になり、必要に応じてフレームが完了します。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Microsoft Windows XP 以降のオペレーティング システムおよび Microsoft DirectX 8.0 以降のバージョンで使用できます。 |
Header | ks.h (Ks.h を含む) |