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
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 |