Compartilhar via


Método IWMDeviceManager2::EnumDevices2 (mswmdm.h)

O método EnumDevices2 recupera uma interface de enumeração usada para enumerar dispositivos portáteis conectados ao computador.

A Microsoft recomenda fortemente que os aplicativos usem o método EnumDevices2 em vez de IWMDeviceManager::EnumDevices.

Sintaxe

HRESULT EnumDevices2(
  [out] IWMDMEnumDevice **ppEnumDevice
);

Parâmetros

[out] ppEnumDevice

Ponteiro para um ponteiro para uma interface IWMDMEnumDevice . O chamador é responsável por chamar Release na interface recuperada.

Retornar valor

O método retorna um HRESULT. Todos os métodos de interface no Windows Media Gerenciador de Dispositivos podem retornar qualquer uma das seguintes classes de códigos de erro:

  • Códigos de erro COM padrão
  • Códigos de erro do Windows convertidos em valores HRESULT
  • Códigos de erro do Windows Media Gerenciador de Dispositivos
Para obter uma lista abrangente de possíveis códigos de erro, consulte Códigos de erro.

Comentários

Esse método retorna um enumerador que aproveita o sistema de Plug and Play (PnP) para uma enumeração mais rápida e menor uso de memória. Para provedores de serviços de reclamação PnP, ele carrega na memória apenas os provedores de serviços que têm um dispositivo atualmente conectado ao computador e solicita apenas esses provedores de serviços para criar objetos de dispositivo.

Esse método retorna uma instantâneo dos dispositivos conectados quando o objeto subjacente foi criado pela primeira vez. Para garantir que a lista de dispositivos esteja atualizada, chame Reinicializar antes de chamar esse método.

Exemplos

O código C++ a seguir percorre todos os dispositivos e recupera o nome de exibição de cada um.


// Enumerate through the devices using the faster EnumDevices2 Plug-and-Play method.
// IWMDevMgr2 is a global IWMDeviceManager2 pointer.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr == S_OK)
{
    // Length of all the strings we'll send in. 
    const UINT MAX_CHARS = 100;
    WCHAR name[MAX_CHARS];

    // Enumerate through devices using a dummy loop.
    while(TRUE)
    {
        // Get a device handle.
        IWMDMDevice* pDevice;
        ULONG ulFetched = 0;
        hr = pEnumDevice->Next(1, &pDevice, &ulFetched);
        CComQIPtr<IWMDMDevice2> pDevice2(pDevice);

        if (hr != S_OK || ulFetched != 1)
        {
            break;
        }
        ZeroMemory(name, MAX_CHARS);
        hr = pDevice2->GetName(name, MAX_CHARS);
    }
}

Requisitos

Requisito Valor
Plataforma de Destino Windows
Cabeçalho mswmdm.h
Biblioteca Mssachlp.lib

Confira também

Enumerando dispositivos

IWMDMEnumDevice Interface

IWMDeviceManager2 Interface