Microsoft DirectX 8.0 |
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 同じ列挙状態で、列挙子のコピーを作成する。
同じ列挙状態で、列挙子のコピーを作成する
構文
HRESULT Clone( IEnumFilters **ppEnum );
パラメータ
- ppEnum
- [out] 新しい列挙子 IEnumFilters へのポインタを受け取る変数のアドレス。
戻り値
次のいずれかの HRESULT 値を返す。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER Null ポインタ引数。
列挙シーケンスの中で、指定のフィルタ数を取得する。
構文
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_POINTER Null ポインタ引数。 VFW_E_ENUM_OUT_OF_SYNC グラフが変更され、この列挙子と互換性がない。
注意
メソッドが成功すると、IBaseFilter ポインタすべてに参照カウントが残る。解放時に注意が必要。
フィルタ グラフが変更される(たとえば、アプリケーションがあるフィルタを削除した)と、列挙子はそのグラフとの互換性をなくし、メソッドは VFW_E_ENUM_OUT_OF_SYNC を返す。列挙子へのその前の呼び出しで取得したデータは廃棄すること、なぜなら有効ではない可能性があるからだ。Reset メソッドを呼び出して列挙子をアップデートすること。そうすれば Next メソッドを安全に呼び出すことができる。
列挙シーケンスを先頭からリセットする。
構文
HRESULT Reset(void);
戻り値
成功を示す S_OK を返す。
指定のフィルタ数をスキップする。
構文
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 メソッドを安全に呼び出すことができる。