Compartir a través de


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
Para obtener una lista extensa de posibles códigos de error, consulte Códigos de error.

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

Consulte también

Enumeración de dispositivos

IWMDMEnumDevice (Interfaz)

IWMDeviceManager::EnumDevices