Метод ICreateDevEnum::CreateClassEnumerator (strmif.h)

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Метод CreateClassEnumerator создает перечислитель для указанной категории устройств.

Синтаксис

HRESULT CreateClassEnumerator(
  [in]  REFCLSID     clsidDeviceClass,
  [out] IEnumMoniker **ppEnumMoniker,
  [in]  DWORD        dwFlags
);

Параметры

[in] clsidDeviceClass

Указывает идентификатор класса (CLSID) категории устройств. См . раздел Категории фильтров.

[out] ppEnumMoniker

Получает указатель на интерфейс IEnumMoniker . Вызывающий объект должен освободить интерфейс .

[in] dwFlags

Побитовая комбинация нулевых или более флагов. Если значение равно нулю, метод перечисляет каждый фильтр в категории. Если установлены какие-либо флаги, перечисление включает только фильтры, соответствующие указанным флагам. Определены следующие флаги:

Flag Описание
CDEF_DEVMON_CMGR_DEVICE Перечисление аудио- или видеокодеков с помощью диспетчера сжатия аудио (ACM) или диспетчера сжатия видео (VCM).
CDEF_DEVMON_DMO Перечисление объектов мультимедиа DirectX (DMOS).
CDEF_DEVMON_FILTER Перечисление собственных фильтров DirectShow.
CDEF_DEVMON_PNP_DEVICE Перечисление Plug and Play аппаратных устройств.

Возвращаемое значение

Возвращает одно из следующих значений HRESULT .

Код возврата Описание
S_OK
Успешно.
E_OUTOFMEMORY
Недостаточно памяти.
S_FALSE
Категория, указанная классом clsidDeviceClass , не существует или пуста.
E_POINTER
Аргумент указателя NULL.

Комментарии

Если категория не существует или пуста, возвращаемое значение S_FALSE, а параметр ppEnumMoniker получает значение NULL. Поэтому проверьте возвращаемое значение S_OK вместо макроса SUCCEEDED :

C++
IEnumMoniker *pEnum = NULL;
hr = pSysDevEnum->CreateClassEnumerator(
    CLSID_VideoCompressorCategory, &pEnum, 0);
if (hr == S_OK) 
{
    // Safe to dereference pEnum.
    pEnum->Release();
}
Используйте интерфейс IEnumMoniker для перечисления моникеров, представляющих фильтры в категории устройств. Моникеры поддерживают интерфейс IMoniker . Моникеры, созданные CreateClassEnumerator , также поддерживают интерфейс IGetCapabilitiesKey .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

См. также раздел

Коды ошибок и успешного выполнения

Интерфейс ICreateDevEnum