次の方法で共有


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 インターフェイスに未処理の参照カウントが残る。呼び出し元は、そのインターフェイスを必ず解放しなければならない。

参照