Condividi tramite


Metodo IWMDMEnumDevice::Next (mswmdm.h)

Il metodo Next restituisce un puntatore al dispositivo successivo, rappresentato da un'interfaccia IWMDMDevice .

Sintassi

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

Parametri

[in] celt

Numero di dispositivi richiesti.

[out] ppDevice

Puntatore alla matrice allocata del chiamante di puntatori dell'interfaccia IWMDMDevice . Le dimensioni di questa matrice devono essere IWMDMDevice *[celt]. Il chiamante deve rilasciare queste interfacce al momento dell'operazione. Per evitare di allocare un'intera matrice, è sufficiente passare l'indirizzo di un puntatore a un'interfaccia IWMDMDevice , come illustrato nelle osservazioni.

[out] pceltFetched

Puntatore a una variabile che riceve il numero di dispositivi (interfacce) restituiti.

Valore restituito

Il metodo restituisce un HRESULT. Tutti i metodi di interfaccia in Windows Media Gestione dispositivi possono restituire una delle classi di codici di errore seguenti:

  • Codici di errore COM standard
  • Codici di errore di Windows convertiti in valori HRESULT
  • Codici di errore di Windows Media Gestione dispositivi
Per un elenco completo dei codici di errore possibili, vedere Codici di errore.

Commenti

Le interfacce dei dispositivi restituite sono basate su un elenco memorizzato nella cache dei dispositivi. Se un dispositivo Plug and Play è collegato o rimosso, l'enumeratore corrente non rifletterà tale elemento e quindi restituirà i dispositivi in base all'elenco memorizzato nella cache. Le applicazioni devono ottenere un nuovo oggetto enumeratore chiamando IWMDeviceManager::EnumDevices per ottenere un elenco aggiornato di dispositivi.

Se si vuole recuperare una singola interfaccia alla volta, non è necessario allocare una matrice per questo metodo, come illustrato nel codice seguente:


// 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....
}

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione mswmdm.h
Libreria Mssachlp.lib

Vedi anche

Enumerazione dei dispositivi

Interfaccia IWMDMEnumDevice

IWMDeviceManager::EnumDevices