次の方法で共有


状態遷移

リソースの適切な割り当てを確保するために、可能なカーネル ストリーミング状態遷移のサブセットのみが許可されます。 次の表に、許可されている遷移と、ストリーム クラス ミニドライバーがこのような遷移中に通常実行するタスクを示します。

切り替え効果 説明

[停止] で一時停止

リソースを割り当てます。 読み取り SRB は、KSSTATE_PAUSE への移行が完了した後にキューに入れられます。

[一時停止] で実行

ストリーミングを開始します。

[実行] で一時停止

ストリーミングを停止します。 未処理の読み取り SRB は、ミニドライバーが管理するキューに残ります。

[一時停止] で停止

リソースの割り当てを解除し、未処理のすべての読み取り SRB を完了します。 イメージで塗りつぶされていない SRB は、KSSTREAM_HEADER 構造体の DataUsed メンバーの長さが 0 で完了します。

: 遷移は、KSSTATE_STOP 状態に戻る前に、KSSTATE_PAUSEKSSTATE_RUN 状態の間で複数回繰り返されます。 ビデオ キャプチャ ミニドライバーは、次のような切り替えを想定する必要があります。

KSSTATE_STOP ->KSSTATE_ACQUIRE ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE -> KSSTATE_STOP

ストリームが KSSTATE_STOP 状態の場合、ミニドライバーは、未処理のすべてのデータ読み取り SRB を直ちに完了する必要があります。

ストリーミング中にユーザー モード アプリケーションが予期せず終了する可能性があるため、すべての ストリーム クラスのミニドライバーは、ストリーム クラスのインターフェイスからの SRB_CLOSE_STREAM 要求をいつでも受け入れて処理する必要があります。 ストリーム クラス インターフェイスは、ミニドライバーに SRB_CLOSE_STREAM を送信する前に、ミニドライバーの HwCancelPacket ルーチンを介して未処理のすべてのバッファーを取り消します。 アプリケーションが終了する前に、ストリームの状態を KSSTATE_STOP に設定できないことに注意してください。

KSSTATE_PAUSE から KSSTATE_RUN または KSSTATE_RUN から KSSTATE_PAUSEへの移行時に、KS_FRAME_INFOKS_VBI_FRAME_INFOKSPROPERTY_DROPPEDFRAMES_CURRENT_SPictureNumber または DropCount メンバーを更新しないでください。 詳細については、「ビデオのキャプチャ」を参照してください。