ICreateDevEnum::CreateClassEnumerator
CreateClassEnumerator メソッドは、指定されたデバイス カテゴリの列挙子を作成する。
構文
HRESULT CreateClassEnumerator(
REFCLSID clsidDeviceClass,
IEnumMoniker **ppEnumMoniker,
DWORD dwFlags
);
パラメータ
clsidDeviceClass
[in] デバイス カテゴリのクラス識別子 (CLSID) を指定する。「フィルタ カテゴリ」を参照すること。
ppEnumMoniker
[out] IEnumMoniker インターフェイス ポインタを受け取る変数のアドレス。
dwFlags
[in] ゼロあるいは複数のフラグのビットの組み合わせ。ゼロの場合は、メソッドはカテゴリのすべてのフィルタを列挙する。任意のフラグが設定されている場合、列挙には指定されたフラグと一致するフィルタのみが含まれる。次のフラグが定義されている。
フラグ | 説明 |
CDEF_DEVMON_CMGR_DEVICE | オーディオ圧縮マネージャ (ACM) またはビデオ圧縮マネージャ (VCM) を使って、オーディオ CODEC またはビデオ CODEC を列挙する。 |
CDEF_DEVMON_DMO | DirectX Media Object (DMO) を列挙する。 |
CDEF_DEVMON_FILTER | 利用可能な DirectShow フィルタを列挙する。 |
CDEF_DEVMON_PNP_DEVICE | プラグ アンド プレイ ハードウェア デバイスを列挙する。 |
戻り値
次のいずれかの HRESULT 値を返す。
戻りコード | 説明 |
S_OK | 成功。 |
E_OUTOFMEMORY | クラス列挙子を作成するのに十分なメモリが利用できない。 |
S_FALSE | clsidDeviceClass によって指定されたカテゴリが存在しないか、空である。 |
E_POINTER | NULL ポインタ引数。 |
注意
カテゴリが存在しないか、空の場合、戻り値は S_FALSE で、ppEnumMoniker 引数は値 NULL を受け取る。したがって、SUCCEEDED マクロを使う代わりに、戻り値 S_OK についてテストする。
IEnumMoniker *pEnum = NULL;
hr = pSysDevEnum->CreateClassEnumerator(
CLSID_VideoCompressorCategory, &pEnum, 0);
if (hr == S_OK)
{
// 安全に pEnum を参照解除する。
pEnum->Release();
}
返される IEnumMoniker インターフェイスに未処理の参照カウントが残る。呼び出し元は、そのインターフェイスを必ず解放しなければならない。
参照