Método IWMDMEnumDevice::Next (mswmdm.h)
El método Next devuelve un puntero al siguiente dispositivo, representado por una interfaz IWMDMDevice .
Sintaxis
HRESULT Next(
[in] ULONG celt,
[out] IWMDMDevice **ppDevice,
[out] ULONG *pceltFetched
);
Parámetros
[in] celt
Número de dispositivos solicitados.
[out] ppDevice
Puntero a la matriz asignada por el autor de la llamada de punteros de interfaz IWMDMDevice . El tamaño de esta matriz debe ser IWMDMDevice *[celt]. El autor de la llamada debe liberar estas interfaces cuando haya terminado con ellas. Para evitar asignar una matriz completa, simplemente pase la dirección de un puntero a una interfaz IWMDMDevice , como se muestra en Comentarios.
[out] pceltFetched
Puntero a una variable que recibe el número de dispositivos (interfaces) devueltos.
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
Las interfaces de dispositivo devueltas se basan en una lista almacenada en caché de dispositivos. Si un dispositivo Plug and Play está conectado o quitado, el enumerador actual no reflejará eso y, por lo tanto, Next devolverá dispositivos basados en la lista almacenada en caché. Las aplicaciones deben obtener un nuevo objeto enumerador llamando a IWMDeviceManager::EnumDevices para obtener una lista actualizada de dispositivos.
Si solo desea recuperar una sola interfaz a la vez, no es necesario asignar una matriz para este método, como se muestra en el código siguiente:
// Get a device enumerator to examine each device.
CComPtr<IWMDeviceManager2> pIWMDevMgr2;
hr = m_IWMDeviceMgr->QueryInterface (__uuidof(IWMDeviceManager2), (void**) &pIWMDevMgr2);
if (hr == S_OK)
{
// TODO: Display a message that the application retrieved IWMDeviceManager2.
}
else
{
// TODO: Display a message that the application was not able to
// retrieve IWMDeviceManager2 in EnumDevices.
return hr;
}
// Enumerate through the devices using the faster EnumDevices2 plug-and-play method.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr != S_OK)
{
//.TODO: Display a message that an error occurred in calling EnumDevices2.
return hr;
}
// Enumerate through devices.
IWMDMDevice *pIWMDMDevice;
ULONG ulFetched = 0;
while(pEnumDevice->Next(1, &pIWMDMDevice, &ulFetched) == S_OK)
{
if (ulFetched != 1)
{
return E_FAIL;
}
// Do some stuff here....
}
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | mswmdm.h |
Library | Mssachlp.lib |