Partager via


IEnumWbemClassObject ::Next, méthode (wbemcli.h)

Utilisez la méthode IEnumWbemClassObject ::Next pour obtenir un ou plusieurs objets commençant à la position actuelle dans une énumération. Cette méthode avance la position actuelle dans l’énumération par les objets uCount , de sorte que les appels suivants retournent les objets suivants.

Syntaxe

HRESULT Next(
  [in]  long             lTimeout,
  [in]  ULONG            uCount,
  [out] IWbemClassObject **apObjects,
  [out] ULONG            *puReturned
);

Paramètres

[in] lTimeout

Spécifie la durée maximale en millisecondes que l’appel bloque avant de retourner. Si vous utilisez la constante WBEM_INFINITE (0xFFFFFFFF), l’appel se bloque jusqu’à ce que les objets soient disponibles. Si vous utilisez la valeur 0 (WBEM_NO_WAIT), l’appel retourne immédiatement, que des objets soient disponibles ou non.

[in] uCount

Nombre d’objets demandés.

[out] apObjects

Pointeur vers suffisamment de stockage pour contenir le nombre de pointeurs d’interface IWbemClassObject spécifiés par uCount. Ce stockage doit être fourni par l'appelant. Ce paramètre ne peut pas être NULL. L’appelant doit appeler Release sur chacun des pointeurs d’interface reçus lorsqu’ils ne sont plus nécessaires.

[out] puReturned

Pointeur vers un ULONG qui reçoit le nombre d’objets retournés. Ce nombre peut être inférieur au nombre demandé dans uCount. Ce pointeur ne peut pas être NULL.

Note La méthode Next retourne WBEM_S_FALSE lorsque vous avez atteint la fin de l’énumération, même si les objets ont été retournés avec succès. La valeur WBEM_S_NO_ERROR retourne uniquement lorsque le nombre d’objets retournés correspond au nombre demandé dans uCount. La valeur WBEM_S_TIMEDOUT est retournée lorsque le nombre d’objets retournés est inférieur au nombre demandé, mais que vous n’êtes pas à la fin de l’énumération. Par conséquent, vous devez utiliser une logique d’arrêt de boucle qui examine la valeur puReturned pour vous assurer que vous avez atteint la fin de l’énumération.
 

Valeur retournée

La méthode Next retourne un HRESULT indiquant le status de l’appel de méthode. La liste suivante répertorie la valeur contenue dans un HRESULT.

Remarques

Vous pouvez voir des codes d’erreur spécifiques à COM retournés si des problèmes réseau vous font perdre la connexion à distance à Windows Management. En cas d’erreur, vous pouvez appeler la fonction COM GetErrorInfo pour obtenir plus d’informations sur l’erreur.

Si plusieurs objets sont demandés et si le nombre d’objets demandés est retourné, la fonction retourne WBEM_S_NO_ERROR. Si moins que le nombre d’objets demandé est disponible et si l’énumération est terminée, ces objets sont retournés et la fonction retourne WBEM_S_FALSE.

Si l’énumération n’est pas terminée, l’appel attend que les objets soient disponibles jusqu’au délai d’attente spécifié. Si l’énumération expire avant que les objets ne soient disponibles, la fonction retourne WBEM_S_TIMEDOUT.

Note Étant donné que le rappel au récepteur peut ne pas être retourné au même niveau d’authentification que celui requis par le client, il est recommandé d’utiliser des semi-synchronisés au lieu d’une communication asynchrone. Pour plus d’informations, consultez Appel d’une méthode.
 

Exemples

Pour une discussion étendue et un exemple de création de requêtes en C++ et WMI, consultez Création de requêtes WMI en C++ sur CodeProject.

Dans le code suivant, plusieurs objets sont demandés :
HRESULT ProcessEnum( IEnumWbemClassObject*    pEnum )
{
    HRESULT    hRes = WBEM_S_NO_ERROR;

    // Final Next will return WBEM_S_FALSE
    while ( WBEM_S_NO_ERROR == hRes )
    {
        ULONG            uReturned;
        IWbemClassObject*    apObj[10];

        hRes = pEnum->Next( WBEM_INFINITE, 10, apObj, &uReturned );

        if ( SUCCEEDED( hRes ) )
        {
            // Do something with the objects.
            //ProcessObjects( uReturned,  apObj );

            for ( ULONG n = 0; n < uReturned; n++ )
            {
                apObj[n]->Release();
            }

        }    // If Enum succeeded...
    }    // While Enum is returning objects...

    return hRes;
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
Plateforme cible Windows
En-tête wbemcli.h (include Wbemidl.h)
Bibliothèque Wbemuuid.lib
DLL Fastprox.dll

Voir aussi

Énumération de WMI

IEnumWbemClassObject