次の方法で共有


IGraphConfig::PushThroughData

PushThroughData メソッドは、指定されたピンにフィルタ グラフを通じてデータを引き渡す。

構文

  HRESULT PushThroughData(
  IPin *pOutputPin,
  IPinConnection *pConnection,
  HANDLE hEventAbort
);

パラメータ

pOutputPin

[in] フィルタ グラフの出力ピンへのポインタ。

pConnection

[in] フィルタ グラフの入力ピンへのポインタ。または NULL。

hEventAbort

[in] イベントのハンドル。フィルタのデータ処理スレッドのいずれかからこのメソッドを呼び出す場合は、この引数に、そのフィルタが停止状態に切り替わったときに通知済みになるイベントのハンドルを指定しなければならない。それ以外の場合、この引数は NULL でかまわない。詳細については、「注意」を参照すること。

戻り値

成功した場合は S_OK を返す。それ以外の場合は、次のいずれかのエラー コードか、または一覧に示されていないその他の値を返す。

説明
E_OUTOFMEMORY 必要なメモリの割り当てに失敗した。
VFW_E_NOT_FOUND 候補となる入力ピンが見つからない。
VFW_E_STATE_CHANGED 操作中にフィルタの状態が変化した。

注意

このメソッドは、指定された出力ピンから指定された入力ピンへ、ペンディング状態のデータを引き渡す。また、入力ピンを指定しないと、フィルタ グラフから最適な入力ピンを検索できる。データの引き渡しを行っているスレッドからは、このメソッドを呼び出さないこと。

フィルタのデータ処理スレッドのいずれかからこのメソッドを呼び出すと、デッドロックに陥る危険性がある。このメソッドがフィルタ グラフをロックするため、IMediaFilter::Stop の呼び出しを受け取ったとき、フィルタが停止できない可能性がある。この状況を避けるため、このメソッドはフィルタが提供するイベント オブジェクトのハンドルを利用する。フィルタは、その Stop メソッドの呼び出しを受け取ったら、イベントを通知しなければならない。

参照