IWMDMEnumDevice::Next-Methode (mswmdm.h)

Die Next-Methode gibt einen Zeiger auf das nächste Gerät zurück, dargestellt durch eine IWMDMDevice-Schnittstelle .

Syntax

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

Parameter

[in] celt

Anzahl der angeforderten Geräte.

[out] ppDevice

Zeiger auf das vom Aufrufer zugeordnete Array von IWMDMGeräteschnittstellenzeigern . Die Größe dieses Arrays muss IWMDMDevice *[celt] sein. Der Aufrufer muss diese Schnittstellen freigeben, wenn er mit ihnen fertig ist. Um die Zuordnung eines ganzen Arrays zu vermeiden, übergeben Sie einfach die Adresse eines Zeigers an eine IWMDMDevice-Schnittstelle , wie in den Hinweisen gezeigt.

[out] pceltFetched

Zeiger auf eine Variable, die die Anzahl der zurückgegebenen Geräte (Schnittstellen) empfängt.

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:

  • Standard-COM-Fehlercodes
  • In HRESULT-Werte konvertierte Windows-Fehlercodes
  • Windows Media Geräte-Manager Fehlercodes
Eine umfassende Liste möglicher Fehlercodes finden Sie unter Fehlercodes.

Hinweise

Die zurückgegebenen Geräteschnittstellen basieren auf einer zwischengespeicherten Liste von Geräten. Wenn ein Plug & Play Gerät angefügt oder entfernt wird, spiegelt der aktuelle Enumerator dies nicht wider. Daher gibt Next Geräte basierend auf der zwischengespeicherten Liste zurück. Anwendungen sollten ein neues Enumeratorobjekt abrufen, indem sie IWMDeviceManager::EnumDevices aufrufen, um eine aktualisierte Liste von Geräten zu erhalten.

Wenn Sie nur eine einzelne Schnittstelle gleichzeitig abrufen möchten, müssen Sie kein Array für diese Methode zuordnen, wie im folgenden Code gezeigt:


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

Anforderungen

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

Weitere Informationen

Auflisten von Geräten

IWMDMEnumDevice-Schnittstelle

IWMDeviceManager::EnumDevices