Microsoft DirectX 8.0 |
ピンの列挙子。
宣言 : Amfilter.h
このクラスは IEnumPins インターフェイスを実装する。次の CBaseFilter メソッドを呼び出す :
フィルタが動的にピンを作成したり削除したりするなら、ピンが変更されるたびにピンのバージョンをインクリメントする。バージョン数が変更されると、列挙オブジェクトはもうそのフィルタとは同期しない。列挙子が同期から外れると、CEnumPins 内のメソッドは VFW_E_ENUM_OUT_OF_SYNC を返す。Reset メソッドを呼び出して列挙子と再同期すること。
Public メソッド | |
---|---|
CEnumPins | コンストラクタ メソッド。 |
~CEnumPins | デストラクタ メソッド。仮想。 |
IEnumPins メソッド | |
Clone | 同じ列挙状態で列挙子のコピーを作る。 |
Next | 指定した数のピンを取得する。 |
Reset | 列挙シーケンスを初期状態にリセットする。 |
Skip | 指定したピンの数だけスキップする。 |
コンストラクタ メソッド。
構文
CEnumPins( CBaseFilter *pFilter, CEnumPins *pEnumPins );
パラメータ
- pFilter
- ピンを列挙するフィルタへのポインタ。
- pEnumPins
- コピーする列挙子の IEnumPins インターフェイスへのポインタ、あるいは NULL 。
注意
pEnumPins が NULL なら、このメソッドは列挙子を列挙シーケンスの初期状態に初期化する。それ以外なら、pEnumPins が指定する列挙子の内部状態をコピーする。
デストラクタ メソッド。
構文
virtual ~CEnumPins(void);
同じ列挙状態で列挙子のコピーを作る。IEnumPins::Clone の実装。
構文
HRESULT Clone( IEnumPins **ppEnum );
パラメータ
- ppEnum
- 新しい列挙子の IEnumPins インターフェイスへのポインタを受け取る変数のアドレス。
戻り値
以下の表に示される HRESULT 値の 1 つを返す。
S_OK 成功。 E_OUTOFMEMORY メモリ不足。 E_POINTER NULL ポインタ引数。 VFW_E_ENUM_OUT_OF_SYNC フィルタの状態は変更され、現在この列挙子とは矛盾する。
指定した数のピンを取得する。 IEnumPins::Next メソッドの実装。
構文
HRESULT Next( ULONG cPins, IPin **ppPins, ULONG *pcFetched );
パラメータ
- cPins
- 取得するピンの数。
- ppPins
- IPin ポインタで埋められる cPins サイズの配列。
- pcFetched
- 取得するピンの数を受け取る変数のポインタ。cPins が 1 なら NULL が可能。
戻り値
以下の表に示される HRESULT 値の 1 つを返す。
S_FALSE 要求された数のピンが取得できなかった。 S_OK 成功。 E_INVALIDARG 不適切な引数。 E_POINTER NULL ポインタ引数。 VFW_E_ENUM_OUT_OF_SYNC フィルタの状態は変更され、現在この列挙子とは矛盾する。
注意
このメソッドは指定した数のピンのポインタを取得し、列挙子の現在位置から開始し、そのポインタを指定した配列に置く。
このメソッドはフィルタの CBaseFilter::GetPin メソッドを呼び出しピンを取得する。
メソッドが成功すると、IPin ポインタはすべて参照カウントが残る。解放時に注意が必要。
列挙シーケンスを初期状態にリセットする。 IEnumPins::Reset メソッドの実装。
構文
HRESULT Reset(void);
戻り値
S_OK を返す。
指定したピンの数だけスキップする。 IEnumPins::Skip メソッドの実装。
構文
HRESULT Skip( ULONG cPins );
パラメータ
- cPins
- スキップするピンの数。
戻り値
以下の表に示される HRESULT 値の 1 つを返す。
S_FALSE シーケンスの終わりまでスキップした。 S_OK 成功。 VFW_E_ENUM_OUT_OF_SYNC フィルタの状態は変更され、現在この列挙子とは矛盾する。