次の方法で共有


IAsyncReader::BeginFlush

BeginFlush メソッドは、フラッシュ処理を開始する。

構文

  HRESULT BeginFlush(void);

パラメータ

このメソッドは、引数をとらない。

戻り値

成功した場合は S_OK を返す。それ以外の場合は S_FALSE を返す。

注意

このメソッドは、未処理の読み取り要求をすべて中断する。ピンがフラッシュしているときは、IAsyncReader::Request メソッドは失敗し、IAsyncReader::WaitForNext メソッドではおそらく VFW_E_TIMEOUT の戻りコードで即座に呼び出し元へ制御が戻る。

ダウンストリーム入力ピンは、ダウンストリーム フィルタがフィルタ グラフをフラッシュするときは必ずこのメソッドを呼び出す必要がある。このメソッドを呼び出した後は、WaitForNext メソッドを ppSample 引数によって NULL が返されるまで呼び出し、キューから未処理のサンプル キューを消去する。エラー コードは無視し、各サンプルは解放すること。次に、IAsyncReader::EndFlush メソッドを呼び出して、フラッシュ処理を終了する。

詳細については、「フラッシュ」を参照すること。

サンプル コード

以下の例は、ダウンストリーム入力ピンがこのメソッドを呼び出す方法を示したものである。

m_pReader->BeginFlush(); 
while (1) {
    IMediaSample *pSample;
    DWORD_PTR dwUnused;
    m_pReader->WaitForNext(0, &pSample, &dwUnused);
    if(pSample) { 
        pSample->Release();  
    } 
    else {  // 以降サンプルなし。
        break;
    }
}
m_pReader->EndFlush();

参照