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