次の方法で共有


IAsyncReader::WaitForNext

WaitForNext メソッドは、次のペンディング状態の読み取り要求が完了するまで待機する。

構文

  HRESULT WaitForNext(
  DWORD dwTimeout,
  IMediaSample **ppSample,
  DWORD_PTR *pdwUser
);

パラメータ

dwTimeout

[in] タイムアウト値(ミリ秒単位) を指定する。無制限に待機するときは、値 INFINITE を使うこと。

ppSample

[out] IMediaSample インターフェイス ポインタを受け取る変数のアドレス。

pdwUser

[out] IAsyncReader::Request メソッドで指定される dwUser 引数の値を受け取る変数へのポインタ。

戻り値

HRESULT 値を返す。可能な値は次のとおりである。

戻りコード 説明
VFW_E_TIMEOUT タイムアウト期間が過ぎたか、ピンがフラッシュしている。
VFW_E_WRONG_STATE ピンがフラッシュしている。
E_FAIL 読み取りエラーが発生した。
S_OK 成功。
S_FALSE ファイルの末尾に達した。取得したバイトの数が要求されたバイトの数より少なかった。

注意

メソッドが成功すると、ppSample 引数にはそのバッファに要求されたデータを保持するメディア サンプルへのポインタが含まれる。IMediaSample::GetTime メソッドを呼び出し、結果を 10,000,000 で除算して、開始バイトと停止バイトを求める。サンプルが順序どおりに返されない可能性がある。データの処理が完了したら、サンプルは解放すること。

ピンがフラッシュしていると、メソッドは失敗する。ただし、ppSample で空のサンプルを返す場合がある。*ppSample が NULL でなければ、サンプルを解放して、破棄すること。詳細については、「IAsyncReader::BeginFlush」を参照すること。

読み取りエラーが発生すると、ソース フィルタがエラー イベントをフィルタ グラフ マネージャに送信する。呼び出し元はエラーを通知する必要はない。

参照