Compartilhar via


Método IWMDMEnumDevice::Next (mswmdm.h)

O método Next retorna um ponteiro para o próximo dispositivo, representado por uma interface IWMDMDevice .

Sintaxe

HRESULT Next(
  [in]  ULONG       celt,
  [out] IWMDMDevice **ppDevice,
  [out] ULONG       *pceltFetched
);

Parâmetros

[in] celt

Número de dispositivos solicitados.

[out] ppDevice

Ponteiro para a matriz alocada pelo chamador de ponteiros de interface IWMDMDevice . O tamanho dessa matriz deve ser IWMDMDevice *[celt]. O chamador deve liberar essas interfaces quando terminar com elas. Para evitar alocar uma matriz inteira, basta passar o endereço de um ponteiro para uma interface IWMDMDevice , conforme mostrado em Comentários.

[out] pceltFetched

Ponteiro para uma variável que recebe o número de dispositivos (interfaces) retornados.

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

As interfaces de dispositivo retornadas são baseadas em uma lista armazenada em cache de dispositivos. Se um dispositivo Plug and Play for anexado ou removido, o enumerador atual não refletirá isso e, portanto, Next retornará dispositivos com base na lista armazenada em cache. Os aplicativos devem obter um novo objeto enumerador chamando IWMDeviceManager::EnumDevices para obter uma lista atualizada de dispositivos.

Se você quiser recuperar apenas uma única interface por vez, não precisará alocar uma matriz para esse método, conforme mostrado no código a seguir:


// 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 Valor
Plataforma de Destino Windows
Cabeçalho mswmdm.h
Biblioteca Mssachlp.lib

Confira também

Enumerando dispositivos

IWMDMEnumDevice Interface

IWMDeviceManager::EnumDevices