IPinFlowControl::Block
Block メソッドは、ピンからのデータ フローの動作を停止、または停止解除する。
構文
HRESULT Block(
DWORD dwBlockFlags,
HANDLE hEvent
);
パラメータ
dwBlockFlags
[in] ピンの動作を停止するかどうかを示すフラグ。次のいずれかの値でなければならない。
- ゼロ :ピンからのデータ フローを停止解除する。
- AM_PIN_FLOW_CONTROL_BLOCK :ピンからのデータ フローの動作を停止する。
hEvent
[in] イベント オブジェクトのハンドルまたは NULL。この引数が NULL でない場合、メソッドは非同期になり、即座に戻る。操作が完了すると、イベントが通知済みになる。この引数が NULL の場合、メソッドは同期になり、ピンの動作が停止するまで完了しない。dwBlockFlags がゼロの場合、この引数は NULL でなければならない。
戻り値
HRESULT 値を返す。可能な値は次のとおりである。
値 | 説明 |
S_FALSE | ピンは既に停止解除されている。 |
S_OK | 成功。 |
VFW_E_PIN_ALREADY_BLOCKED | ピンは既に他のスレッドで動作が停止されている。 |
VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD | ピンは既に呼び出し元のスレッドで動作が停止されている。 |
注意
このメソッドは同期も非同期も可能である。
- 非同期に呼び出すには、CreateEvent 関数を使ってイベント オブジェクトを作成する。イベント ハンドルを hEvent 引数に渡す。メソッドはすぐに戻り、操作が完了するとイベントを通知する。WaitForSingleObject のような待ち関数を呼び出してそのイベントを待つこと。
- 同期して呼び出すには、hEvent 引数を NULL に設定する。そのメソッドは完了するまで動作を停止する。メソッドはピンがサンプル出力する用意ができるまで完了しない可能性がある。フィルタがポーズ状態の場合、メソッドは無制限に動作を停止する可能性がある。したがって、メインのアプリケーション スレッドからこのメソッドを同期して呼び出してはならない。
参照