Método ICreateDevEnum::CreateClassEnumerator (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O método CreateClassEnumerator cria um enumerador para uma categoria de dispositivo especificada.

Sintaxe

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

Parâmetros

[in] clsidDeviceClass

Especifica o CLSID (identificador de classe) da categoria de dispositivo. Consulte Categorias de Filtro.

[out] ppEnumMoniker

Recebe um ponteiro para a interface IEnumMoniker . O chamador deve liberar a interface.

[in] dwFlags

Combinação bit a bit de zero ou mais sinalizadores. Se zero, o método enumera cada filtro na categoria. Se algum sinalizador for definido, a enumeração incluirá apenas filtros que correspondem aos sinalizadores especificados. Os seguintes sinalizadores são definidos:

Sinalizador Descrição
CDEF_DEVMON_CMGR_DEVICE Enumerar codecs de áudio ou vídeo usando o gerenciador de compactação de áudio (ACM) ou o VCM (gerenciador de compactação de vídeo).
CDEF_DEVMON_DMO Enumerar DMOs (Objetos de Mídia DirectX).
CDEF_DEVMON_FILTER Enumerar filtros nativos do DirectShow.
CDEF_DEVMON_PNP_DEVICE Enumerar dispositivos de hardware Plug and Play.

Retornar valor

Retorna um dos seguintes valores HRESULT .

Código de retorno Descrição
S_OK
Êxito.
E_OUTOFMEMORY
Sem memória.
S_FALSE
A categoria especificada por clsidDeviceClass não existe ou está vazia.
E_POINTER
Argumento de ponteiro NULL.

Comentários

Se a categoria não existir ou estiver vazia, o valor retornado será S_FALSE e o parâmetro ppEnumMoniker receberá o valor NULL. Portanto, teste o valor retornado S_OK em vez de usar a macro SUCCEEDED :

C++
IEnumMoniker *pEnum = NULL;
hr = pSysDevEnum->CreateClassEnumerator(
    CLSID_VideoCompressorCategory, &pEnum, 0);
if (hr == S_OK) 
{
    // Safe to dereference pEnum.
    pEnum->Release();
}
Use a interface IEnumMoniker para enumerar monikers que representam os filtros na categoria do dispositivo. Os monikers dão suporte à interface IMoniker . Os monikers criados por CreateClassEnumerator também dão suporte à interface IGetCapabilitiesKey .

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

ICreateDevEnum Interface