Freigeben über


IWMDeviceManager2::EnumDevices2-Methode (mswmdm.h)

Die EnumDevices2-Methode ruft eine Enumerationsschnittstelle ab, die verwendet wird, um tragbare Geräte aufzulisten, die mit dem Computer verbunden sind.

Microsoft empfiehlt dringend, dass Anwendungen die EnumDevices2-Methode anstelle von IWMDeviceManager::EnumDevices verwenden.

Syntax

HRESULT EnumDevices2(
  [out] IWMDMEnumDevice **ppEnumDevice
);

Parameter

[out] ppEnumDevice

Zeiger auf einen Zeiger auf eine IWMDMEnumDevice-Schnittstelle . Der Aufrufer ist für den Aufruf von Release auf der abgerufenen Schnittstelle verantwortlich.

Rückgabewert

Die Methode gibt ein HRESULT zurück. Alle Schnittstellenmethoden in Windows Media Geräte-Manager können eine der folgenden Klassen von Fehlercodes zurückgeben:

  • Com-Standardfehlercodes
  • In HRESULT-Werte konvertierte Windows-Fehlercodes
  • Windows Media Geräte-Manager Fehlercodes
Eine ausführliche Liste möglicher Fehlercodes finden Sie unter Fehlercodes.

Hinweise

Diese Methode gibt einen Enumerator zurück, der das PnP-System (Plug & Play) für eine schnellere Enumeration und eine geringere Arbeitsspeicherauslastung nutzt. Bei PnP-Beschwerdedienstanbietern lädt es nur diejenigen Dienstanbieter in den Arbeitsspeicher, die über ein Gerät verfügen, das derzeit mit dem Computer verbunden ist, und fordert nur diese Dienstanbieter auf, Geräteobjekte zu erstellen.

Diese Methode gibt eine Momentaufnahme der Geräte zurück, die beim erstmaligen Erstellen des zugrunde liegenden Objekts verbunden sind. Um sicherzustellen, dass die Geräteliste auf dem neuesten Stand ist, rufen Sie Erneutitialisieren auf, bevor Sie diese Methode aufrufen.

Beispiele

Der folgende C++-Code durchläuft alle Geräte und ruft den Anzeigenamen der einzelnen Geräte ab.


// 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);
    }
}

Anforderungen

Anforderung Wert
Zielplattform Windows
Kopfzeile mswmdm.h
Bibliothek Mssachlp.lib

Weitere Informationen

Auflisten von Geräten

IWMDMEnumDevice-Schnittstelle

IWMDeviceManager2-Schnittstelle