IAMGraphStreams::FindUpstreamInterface
FindUpstreamInterface メソッドは、指定されたピンから始めて、指定されたインターフェイスをフィルタ グラフ内で検索する。
構文
HRESULT FindUpstreamInterface(
IPin *pPin,
REFIID riid,
void **ppvInterface,
DWORD dwFlags
);
パラメータ
pPin
[in] ピンの IPin インターフェイスへのポインタ。ピンは、フィルタ グラフ内のフィルタに属していなければならない。
riid
[in] 検索するインターフェイスを指定するインターフェイス ID (IID) への参照。
ppvInterface
[out] 空のポインタのアドレス。メソッドが成功した場合、この変数は riid で指定されるインターフェイスへのポインタを受け取る。
dwFlags
[in] AM_INTF_SEARCH_FLAGS 列挙型で定義されるフラグの組み合わせ。検索対象 (ピンまたはフィルタ) を指定する。
戻り値
次のいずれかの HRESULT 値を返す。
戻りコード | 説明 |
E_NOINTERFACE | インターフェイスが見つからない。 |
E_POINTER | 無効なポインタ。 |
S_OK | 成功。 |
注意
dwFlags がゼロの場合、このメソッドは、次の順序でインターフェイスを検索する。
pPin で指定されたピンを問い合わせる。
pPin が入力ピンの場合は、pPin に出力ピンが接続されていれば、その出力ピン上で FindUpstreamInterface を再帰的に呼び出す。
pPin が出力ピンの場合は、pPin を所有しているフィルタを問い合わせる。その後、フィルタ上で pPin に内部接続している入力ピンのリストを作成し、それらの入力ピン上で FindUpstreamInterface を再帰的に呼び出す。
内部接続を持つ入力ピンのリストを作成するために、このメソッドは以下のことを実行する。
- IPin::QueryInternalConnections を呼び出す。
- それが失敗すると、IBaseFilter::EnumPins を呼び出して、入力ピンを探す。
このインターフェイスをサポートしている最初のオブジェクトを見つけると停止する。dwFlags をゼロ以外の値に設定することで、検索するオブジェクトを、フィルタ、入力ピン、出力ピンなどに限定できる。
注 : ICaptureGraphBuilder2::FindInterface メソッドはこの問題に対してより汎用的なアプローチを実装しており、ほとんどの状況でこちらが推奨される。
参照