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」を参照すること。
読み取りエラーが発生すると、ソース フィルタがエラー イベントをフィルタ グラフ マネージャに送信する。呼び出し元はエラーを通知する必要はない。
参照