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