Metodo IWMDeviceManager2::EnumDevices2 (mswmdm.h)
Il metodo EnumDevices2 recupera un'interfaccia di enumerazione usata per enumerare i dispositivi portatili connessi al computer.
Microsoft consiglia vivamente che le applicazioni usino il metodo EnumDevices2 anziché IWMDeviceManager::EnumDevices.
Sintassi
HRESULT EnumDevices2(
[out] IWMDMEnumDevice **ppEnumDevice
);
Parametri
[out] ppEnumDevice
Puntatore a un puntatore a un'interfaccia IWMDMEnumDevice . Il chiamante è responsabile della chiamata a Release nell'interfaccia recuperata.
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
Questo metodo restituisce un enumeratore che sfrutta il sistema Plug and Play (PnP) per un'enumerazione più veloce e un utilizzo di memoria inferiore. Per i provider di servizi di reclamo PnP, carica in memoria solo i provider di servizi che dispongono di un dispositivo attualmente connesso al computer e richiede solo i provider di servizi per creare oggetti dispositivo.
Questo metodo restituisce uno snapshot dei dispositivi connessi al momento della creazione dell'oggetto sottostante. Per assicurarsi che l'elenco di dispositivi sia aggiornato, chiamare Reinitialize prima di chiamare questo metodo.
Esempio
Il codice C++ seguente esegue il ciclo di tutti i dispositivi e recupera il nome visualizzato di ogni dispositivo.
// Enumerate through the devices using the faster EnumDevices2 Plug-and-Play method.
// IWMDevMgr2 is a global IWMDeviceManager2 pointer.
CComPtr<IWMDMEnumDevice> pEnumDevice;
hr = pIWMDevMgr2->EnumDevices2(&pEnumDevice);
if (hr == S_OK)
{
// Length of all the strings we'll send in.
const UINT MAX_CHARS = 100;
WCHAR name[MAX_CHARS];
// Enumerate through devices using a dummy loop.
while(TRUE)
{
// Get a device handle.
IWMDMDevice* pDevice;
ULONG ulFetched = 0;
hr = pEnumDevice->Next(1, &pDevice, &ulFetched);
CComQIPtr<IWMDMDevice2> pDevice2(pDevice);
if (hr != S_OK || ulFetched != 1)
{
break;
}
ZeroMemory(name, MAX_CHARS);
hr = pDevice2->GetName(name, MAX_CHARS);
}
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Windows |
Intestazione | mswmdm.h |
Libreria | Mssachlp.lib |