Microsoft DirectX 8.0

IBaseFilter インターフェイス

フィルタを制御するメソッドを提供する。すべての 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ベンダー情報をもつ文字列を取得する。

IBaseFilter::EnumPins

IBaseFilter インターフェイス

このフィルタのピンを列挙する。

構文

HRESULT EnumPins(
    IEnumPins **ppEnum
);

パラメータ

ppEnum
[out] IEnumPins インターフェイスへのポインタを受け取る変数のアドレス。

戻り値

HRESULT 値を返す。以下の表に示されるいずれかの値。

S_OK成功
E_OUTOFMEMORYメモリ不足
E_POINTER NULL ポインタ引数

注意

このメソッドは IEnumPins インターフェイスをサポートする列挙子を返す、それは標準 COM 列挙子と同様に動作する。詳細については、「ピンの列挙」を参照すること。

メソッドが成功すると、IEnumPins インターフェイスに参照カウントが残る。インターフェイスの解放時に注意が必要。

IBaseFilter::FindPin

IBaseFilter インターフェイス

指定した識別子でピンを取得する。

構文

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 インターフェイスには参照カウントが残る。解放時には注意が必要。

IBaseFilter::JoinFilterGraph

IBaseFilter インターフェイス

フィルタ グラフに参加した、あるいはフィルタ グラフから離れたことをフィルタに通知する。

構文

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 メソッドを呼び出すことで得られる。

IBaseFilter::QueryFilterInfo

IBaseFilter インターフェイス

フィルタについての情報を取得する。

構文

HRESULT QueryFilterInfo(
    FILTER_INFO *pInfo
);

パラメータ

pInfo
[out] FILTER_INFO 構造体へのポインタ。

戻り値

HRESULT 値を返す。次の表に示されるいずれかの値。

S_OK成功
E_POINTERNULL ポインタ引数

注意

このメソッドは FILTER_INFO 構造体にフィルタ情報を書き込む。帰ったとき、FILTER_INFO 構造体の pGraph メンバが NULL ではないなら、IFilterGraph インターフェイスには参照カウントが残る。解放時には注意が必要。

IBaseFilter::QueryVendorInfo

IBaseFilter インターフェイス

ベンダー情報をもつ文字列を取得する。

構文

HRESULT QueryVendorInfo(
    LPWSTR *pVendorInfo
);

パラメータ

pVendorInfo
[out] ベンダー情報が入るワイド キャラクタ文字列へのポインタを受け取る変数のアドレス。

戻り値

HRESULT 値を返す。次の表に示されるいずれかの値。

S_OK成功。
E_NOTIMPLメソッドはサポートされていない。
E_POINTERNULL ポインタ引数。

注意

このメソッドはオプションである。フィルタはそのサポートを要求されない。

メソッドがサポートされているなら、それは CoTaskMemAlloc 関数を使って文字列用のメモリを割り当てる。メモリを解放するには CoTaskMemFree 関数を呼び出すこと。