Partager via


Méthode IWMDMEnumDevice ::Next (mswmdm.h)

La méthode Next retourne un pointeur vers l’appareil suivant, représenté par une interface IWMDMDevice .

Syntaxe

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

Paramètres

[in] celt

Nombre d’appareils demandés.

[out] ppDevice

Pointeur vers le tableau alloué par l’appelant de pointeurs d’interface IWMDMDevice . La taille de ce tableau doit être IWMDMDevice *[celt]. L’appelant doit libérer ces interfaces lorsqu’il les a terminés. Pour éviter d’allouer un tableau entier, il vous suffit de transmettre l’adresse d’un pointeur à une interface IWMDMDevice , comme indiqué dans Remarques.

[out] pceltFetched

Pointeur vers une variable qui reçoit le nombre d’appareils (interfaces) retournés.

Valeur retournée

Cette méthode retourne un code HRESULT. Toutes les méthodes d’interface dans Windows Media Gestionnaire de périphériques peuvent retourner l’une des classes de codes d’erreur suivantes :

  • Codes d’erreur COM standard
  • Codes d’erreur Windows convertis en valeurs HRESULT
  • Codes d’erreur Gestionnaire de périphériques Windows Media
Pour obtenir une liste complète des codes d’erreur possibles, consultez Codes d’erreur.

Remarques

Les interfaces d’appareil retournées sont basées sur une liste mise en cache d’appareils. Si un appareil Plug-and-Play est attaché ou supprimé, l’énumérateur actuel ne le reflète pas et, par conséquent, Suivant retourne les appareils en fonction de la liste mise en cache. Les applications doivent obtenir un nouvel objet énumérateur en appelant IWMDeviceManager ::EnumDevices pour obtenir une liste actualisée des appareils.

Si vous souhaitez récupérer une seule interface à la fois, vous n’avez pas besoin d’allouer un tableau pour cette méthode, comme indiqué dans le code suivant :


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

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête mswmdm.h
Bibliothèque Mssachlp.lib

Voir aussi

Énumération des appareils

IWMDMEnumDevice Interface

IWMDeviceManager ::EnumDevices