次の方法で共有


IMediaControl::StopWhenReady メソッド (control.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

メソッドは StopWhenReady フィルター グラフを一時停止し、フィルターでデータをキューに入れ、フィルター グラフを停止します。

構文

HRESULT StopWhenReady();

戻り値

HRESULT 値を返します。 使用可能な値は次のとおりです。

リターン コード 説明
S_OK
成功しました。
S_FALSE
メソッドが返されたとき、グラフは引き続き一時停止状態に移行していました。

注釈

このメソッドは、グラフが停止している間にフィルター グラフをシークする場合に便利です。 フィルター グラフが停止している限り、現在の位置の変更は、新しいフレームでビデオ ウィンドウを再描画しません。 そのため、 IMediaSeeking::SetPositions を呼び出しても、ビデオ ウィンドウは更新されません。 シーク操作の後にウィンドウを更新するには、 を呼び出します StopWhenReady。 このメソッドは、グラフを一時停止状態に切り替え、一時停止操作が完了するのを待ってから、グラフを停止状態に戻します。 一時停止操作はグラフ内のデータをキューに入れ、ビデオ レンダラーが新しいフレームを受信して表示できるようにします。

このメソッドは非同期です。 一時停止が完了するまで、別のスレッドで待機します。 呼び出し元のスレッドはブロックしません。これにより、アプリケーションはユーザー入力に応答できます。 メソッドが戻ると、一時停止操作が完了する前でも、グラフの論理状態が停止します。 この時点で IMediaControl::GetState メソッドを呼び出すと、State_Stoppedが返されます。

一時停止操作が完了する前に、アプリケーションが別の状態変更コマンド (一時停止、実行、シークなど) を発行した場合、新しいコマンドは保留中の停止コマンドを取り消します。 一時停止操作は完了しますが、グラフは停止しません。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー control.h (Dshow.h を含む)
Library Strmiids.lib

こちらもご覧ください

エラーコードと成功コード

IMediaControl インターフェイス