Microsoft DirectX 8.0

IEnumFilters インターフェイス

IFilterGraph::EnumFilters メソッドはこのインターフェイスを返す、それはフィルタ グラフ内で現在フィルタを持っている標準的な Component Object Model (COM) コレクション オブジェクトへのアクセスを提供する。COM コレクションについては Platform SDK の IEnumXXXX トピックを参照。フィルタの列挙についての詳細については、「Enumerating Objects in a Filter Graph」を参照すること。

グラフ内のフィルタ セットが変更になったなら、このインターフェイスのいくつかのメソッドが VFW_E_ENUM_OUT_OF_SYNC を返す。Reset メソッドを呼び出して列挙子を再同期すること。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IEnumFilters メソッド説明
Next 列挙シーケンスの中で、指定のフィルタ数を取得する。
Skip 指定のフィルタ数をスキップする。
Reset 列挙シーケンスを先頭からリセットする。
Clone 同じ列挙状態で、列挙子のコピーを作成する。

IEnumFilters::Clone

IEnumFilters インターフェイス

同じ列挙状態で、列挙子のコピーを作成する

構文

HRESULT Clone(
    IEnumFilters **ppEnum
);

パラメータ

ppEnum
[out] 新しい列挙子 IEnumFilters へのポインタを受け取る変数のアドレス。

戻り値

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

S_OK成功。
E_OUTOFMEMORYメモリ不足。
E_POINTERNull ポインタ引数。

IEnumFilters::Next

IEnumFilters インターフェイス

列挙シーケンスの中で、指定のフィルタ数を取得する。

構文

HRESULT Next(
    ULONG cFilters,
    IBaseFilter **ppFilter,
    ULONG *pcFetched
);

パラメータ

cFilters
[in] 取得するフィルタの数。
ppFilter
[out] cFilters サイズの配列、ここに IBaseFilter ポインタが配置される。
pcFetched
[out] 取得したフィルタの数を受け取る変数へのポインタ。cFilters が 1 なら、NULL もあり得る。

戻り値

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

S_FALSE要求された数と同じ数のフィルタを取得できなかった。
S_OK成功。
E_INVALIDARG無効な引数。
E_POINTERNull ポインタ引数。
VFW_E_ENUM_OUT_OF_SYNCグラフが変更され、この列挙子と互換性がない。

注意

メソッドが成功すると、IBaseFilter ポインタすべてに参照カウントが残る。解放時に注意が必要。

フィルタ グラフが変更される(たとえば、アプリケーションがあるフィルタを削除した)と、列挙子はそのグラフとの互換性をなくし、メソッドは VFW_E_ENUM_OUT_OF_SYNC を返す。列挙子へのその前の呼び出しで取得したデータは廃棄すること、なぜなら有効ではない可能性があるからだ。Reset メソッドを呼び出して列挙子をアップデートすること。そうすれば Next メソッドを安全に呼び出すことができる。

IEnumFilters::Reset

IEnumFilters インターフェイス

列挙シーケンスを先頭からリセットする。

構文

HRESULT Reset(void);

戻り値

成功を示す S_OK を返す。

IEnumFilters::Skip

IEnumFilters インターフェイス

指定のフィルタ数をスキップする。

構文

HRESULT Skip(
    ULONG cFilter
);

パラメータ

cFilter
[in] スキップするフィルタ数。

戻り値

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

S_FALSEスキップはシーケンスの最後を越えた。
S_OK成功。
VFW_E_ENUM_OUT_OF_SYNCグラフは変更されて、現在その列挙子と互換性がない。

注意

フィルタ グラフが変更される(たとえば、アプリケーションがあるフィルタを削除した)と、列挙子はそのグラフとの互換性をなくし、メソッドは VFW_E_ENUM_OUT_OF_SYNC を返す。列挙子へのその前の呼び出しで取得したデータは廃棄すること、なぜなら有効ではない可能性があるからだ。Reset メソッドを呼び出して列挙子をアップデートすること。そうすれば Skip メソッドを安全に呼び出すことができる。