Microsoft DirectX 8.0 |
フィルタを制御するメソッドを提供する。すべての Microsoft® DirectShow® フィルタはこのインターフェイスを公開する。このインターフェイスは IMediaFilter インターフェイスから派生し、IMediaFilter フィルタを通して IPersist インターフェイスを継承する。
フィルタ グラフ マネージャはこのインターフェイスを使用してフィルタを制御する。アプリケーションと他のフィルタはこのインターフェイスを使用してピンを列挙し、フィルタ情報をクエリすることができる。アプリケーションはフィルタの状態を変更する際にそれを使うべきではない。そうではなく、フィルタ グラフ マネージャの IMediaControl インターフェイスを呼び出すこと。
フィルタ開発者へ : すべての DirectShow フィルタでこのインターフェイスを実装すること。CBaseFilter 基底クラスはこのインターフェイスを実装する。
Vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IMediaFilter メソッド 説明 Stop フィルタを停止する。 Pause フィルタをポーズする。 Run フィルタを実行する。 GetState フィルタの状態 (実行、停止、ポーズ) を取得する。 SetSyncSource フィルタの基準クロックを設定する。 GetSyncSource フィルタが使っている基準クロックを取得する。 IBaseFilter メソッド 説明 EnumPins このフィルタのピンを列挙する。 FindPin 指定した識別子でピンを取得する。 QueryFilterInfo フィルタについての情報を取得する。 JoinFilterGraph フィルタグラフに参加した、あるいはフィルタグラフから離れたことをフィルタに通知する。 QueryVendorInfo ベンダー情報をもつ文字列を取得する。
このフィルタのピンを列挙する。
構文
HRESULT EnumPins( IEnumPins **ppEnum );
パラメータ
- ppEnum
- [out] IEnumPins インターフェイスへのポインタを受け取る変数のアドレス。
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功 E_OUTOFMEMORY メモリ不足 E_POINTER NULL ポインタ引数
注意
このメソッドは IEnumPins インターフェイスをサポートする列挙子を返す、それは標準 COM 列挙子と同様に動作する。詳細については、「ピンの列挙」を参照すること。
メソッドが成功すると、IEnumPins インターフェイスに参照カウントが残る。インターフェイスの解放時に注意が必要。
指定した識別子でピンを取得する。
構文
HRESULT FindPin( LPCWSTR Id, IPin **ppPin );
パラメータ
- Id
- [in] 定数へのポインタ、ピンを示す NULL で終わる Unicode 文字列。IPin::QueryId を呼び出してピンの識別子を取得すること。
- ppPin
- [out] ピンの IPin インターフェイスへのポインタを受け取る変数のアドレス。メソッドが失敗すると、*ppPin は NULL にセットされる。
戻り値
HRESULT 値を返す。次の表に示されるいずれかの値。
S_OK 成功。 E_POINTER NULL ポインタ引数。 VFW_E_NOT_FOUND この識別子ではピンを見つけられなかった。
注意
このメソッドはグラフの永続性をサポートする。IPin::QueryId メソッドを使ってピンの状態をセーブし、このメソッドを使って常態をリストアすること。ピンの識別子文字列はフィルタ実装によって定義される。識別子はフィルタ内でユニークなものでなければならない。
メソッドが成功すると、返ってくる IPin インターフェイスには参照カウントが残る。解放時には注意が必要。
フィルタ グラフに参加した、あるいはフィルタ グラフから離れたことをフィルタに通知する。
構文
HRESULT JoinFilterGraph( IFilterGraph *pGraph, LPCWSTR pName );
パラメータ
- pGraph
- [in] フィルタ グラフ マネージャの IFilterGraph インターフェイスへのポインタ、あるいはフィルタがグラフを離れたなら NULL。
- pName
- [in, string] フィルタの名前を示す NULL で終わる Unicode 文字列へのポインタ。
戻り値
成功なら S_OK を返す、あるいはエラーの原因を示す HRESULT 値を返す。
注意
フィルタ グラフ マネージャがあるフィルタをフィルタ グラフに追加するとき、それは自分自身のポインタでこのメソッドを呼び出す。グラフからフィルタを削除するとき、このメソッドを NULL ポインタで呼び出す。
アプリケーションはこのメソッドを決して呼び出してはならない。フィルタをグラフに追加するには、フィルタ グラフ マネージャで IFilterGraph::AddFilter を呼び出すこと。
フィルタは IFilterGraph インターフェイス ポインタを保存するので、イベント通知を送ることができる。しかしこのインターフェイスへの参照カウントを追加しては ならない。そうすると参照化運との繰り返しを作る事になる、なぜならフィルタ グラフ マネージャはフィルタの参照カウントを保持しているからだ。参照の繰り返しによってインターフェイスは正しく解放できなくなる。フィルタ グラフ マネージャがフィルタにグラフから削除されたことを通知するまでは、IFilterGraph インターフェイスは有効性が保証される。
pName パラメータに渡される名前は QueryFilterInfo メソッドを呼び出すことで得られる。
フィルタについての情報を取得する。
構文
HRESULT QueryFilterInfo( FILTER_INFO *pInfo );
パラメータ
- pInfo
- [out] FILTER_INFO 構造体へのポインタ。
戻り値
HRESULT 値を返す。次の表に示されるいずれかの値。
S_OK 成功 E_POINTER NULL ポインタ引数
注意
このメソッドは FILTER_INFO 構造体にフィルタ情報を書き込む。帰ったとき、FILTER_INFO 構造体の pGraph メンバが NULL ではないなら、IFilterGraph インターフェイスには参照カウントが残る。解放時には注意が必要。
ベンダー情報をもつ文字列を取得する。
構文
HRESULT QueryVendorInfo( LPWSTR *pVendorInfo );
パラメータ
- pVendorInfo
- [out] ベンダー情報が入るワイド キャラクタ文字列へのポインタを受け取る変数のアドレス。
戻り値
HRESULT 値を返す。次の表に示されるいずれかの値。
S_OK 成功。 E_NOTIMPL メソッドはサポートされていない。 E_POINTER NULL ポインタ引数。
注意
このメソッドはオプションである。フィルタはそのサポートを要求されない。
メソッドがサポートされているなら、それは CoTaskMemAlloc 関数を使って文字列用のメモリを割り当てる。メモリを解放するには CoTaskMemFree 関数を呼び出すこと。