次の方法で共有


CBaseInputPin::ReceiveCanBlock

ReceiveCanBlock メソッドは、IMemInputPin::Receive メソッドへの呼び出しがブロックするかどうかを調べる。このメソッドは IMemInputPin::ReceiveCanBlock メソッドを実装する。

構文

  HRESULT ReceiveCanBlock(void);

戻り値

HRESULT 値を返す。次のいずれかの値を返す。

説明
S_FALSE ピンは Receive を呼び出してもブロックしない。
S_OK ピンは Receive を呼び出すとブロックする可能性がある。

注意

Receive メソッドの呼び出しがブロックしないと保証される場合は、S_FALSE を返す。それ以外の場合は、S_OK またはエラー コードを返す。Receive メソッドがダウンストリーム ピンの Receive を呼び出すと、ダウンストリーム ピンはブロックする可能性がある。ReceiveCanBlock はそのことを考慮に入れなければならない。

アップストリーム フィルタはこのメソッドを使ってスレッドの処理方法を決定できる。Receive メソッドがブロックする可能性がある場合、アップストリーム フィルタはデータをバッファに入れるワーカー スレッドの使用を決定することもできる。この処理方法の実装については、「COutputQueueクラス」を参照すること。

基底クラスでは、次のいずれかが真のときこのメソッドは S_OK を返す。

  • フィルタに出力ピンがない。
  • このフィルタに接続している入力ピンがブロックする可能性を通知する。
  • このフィルタに接続している入力ピンが IMemInputPin インターフェイスをサポートしていない。

参照