Compartir a través de


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

El método EnumDevices2 recupera una interfaz de enumeración que se usa para enumerar dispositivos portátiles conectados al equipo.

Microsoft recomienda encarecidamente que las aplicaciones usen el método EnumDevices2 en lugar de IWMDeviceManager::EnumDevices.

Sintaxis

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

Parámetros

[out] ppEnumDevice

Puntero a un puntero a una interfaz IWMDMEnumDevice . El autor de la llamada es responsable de llamar a Release en la interfaz recuperada.

Valor devuelto

El método devuelve un valor HRESULT. Todos los métodos de interfaz de Windows Media Administrador de dispositivos pueden devolver cualquiera de las siguientes clases de códigos de error:

  • Códigos de error COM estándar
  • Códigos de error de Windows convertidos en valores HRESULT
  • Códigos de error de windows Media Administrador de dispositivos
Para obtener una lista extensa de posibles códigos de error, consulte Códigos de error.

Comentarios

Este método devuelve un enumerador que aprovecha el sistema de Plug and Play (PnP) para una enumeración más rápida y un uso de memoria menor. En el caso de los proveedores de servicios PnP-complaint, solo carga en memoria los proveedores de servicios que tienen un dispositivo conectado actualmente al equipo y solicita solo a esos proveedores de servicios que creen objetos de dispositivo.

Este método devuelve una instantánea de los dispositivos conectados cuando se creó el objeto subyacente por primera vez. Para asegurarse de que la lista de dispositivos está actualizada, llame a Reinitialize antes de llamar a este método.

Ejemplos

El siguiente código de C++ recorre en bucle todos los dispositivos y recupera el nombre para mostrar de cada uno.


// 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 Value
Plataforma de destino Windows
Encabezado mswmdm.h
Library Mssachlp.lib

Consulte también

Enumeración de dispositivos

IWMDMEnumDevice (Interfaz)

IWMDeviceManager2 (Interfaz)