Compartir a través de


Método IEnumWbemClassObject::Next (wbemcli.h)

Use el método IEnumWbemClassObject::Next para obtener uno o varios objetos empezando por la posición actual de una enumeración. Este método avanza la posición actual en la enumeración por objetos uCount , de modo que las llamadas posteriores devuelvan los objetos subsiguientes.

Sintaxis

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

Parámetros

[in] lTimeout

Especifica la cantidad máxima de tiempo en milisegundos que bloquea la llamada antes de devolver. Si usa el WBEM_INFINITE constante (0xFFFFFFFF), la llamada se bloquea hasta que los objetos estén disponibles. Si usa el valor 0 (WBEM_NO_WAIT), la llamada devuelve inmediatamente, tanto si hay objetos disponibles como si no.

[in] uCount

Número de objetos solicitados.

[out] apObjects

Puntero a suficiente almacenamiento para contener el número de punteros de interfaz IWbemClassObject especificados por uCount. Este almacenamiento lo debe proporcionar el llamador. Este parámetro no puede ser NULL. El autor de la llamada debe llamar a Release en cada uno de los punteros de interfaz recibidos cuando ya no sean necesarios.

[out] puReturned

Puntero a un ULONG que recibe el número de objetos devueltos. Este número puede ser menor que el número solicitado en uCount. Este puntero no puede ser NULL.

Nota El método Next devuelve WBEM_S_FALSE cuando haya llegado al final de la enumeración, incluso si los objetos se han devuelto correctamente. El valor de WBEM_S_NO_ERROR solo devuelve cuando el número de objetos devueltos coincide con el número solicitado en uCount. El valor WBEM_S_TIMEDOUT se devuelve cuando el número de objetos devueltos es menor que el número solicitado, pero no se encuentra al final de la enumeración. Por lo tanto, debe usar la lógica de terminación de bucle que examine el valor puReturned para asegurarse de que ha llegado al final de la enumeración.
 

Valor devuelto

El método Next devuelve un VALOR HRESULT que indica el estado de la llamada al método. En la lista siguiente se muestra el valor contenido en un HRESULT.

Comentarios

Es posible que vea códigos de error específicos de COM devueltos si los problemas de red hacen que pierda la conexión remota a la administración de Windows. En caso de error, puede llamar a la función COM GetErrorInfo para obtener más información de error.

Si se solicita más de un objeto y si se devuelve el número de objetos solicitados, la función devuelve WBEM_S_NO_ERROR. Si es menor que el número solicitado de objetos está disponible y si la enumeración se ha completado, se devuelven esos objetos y la función devuelve WBEM_S_FALSE.

Si la enumeración no se ha completado, la llamada espera a que los objetos estén disponibles hasta el tiempo de espera especificado. Si la enumeración agota el tiempo de espera antes de que los objetos estén disponibles, la función devuelve WBEM_S_TIMEDOUT.

Nota Dado que es posible que la devolución de llamada al receptor no se devuelva en el mismo nivel de autenticación que requiere el cliente, se recomienda usar la semisynchronous en lugar de la comunicación asincrónica. Para más información, vea Llamada a un método.
 

Ejemplos

Para obtener una explicación extendida y un ejemplo de cómo realizar consultas en C++ y WMI, consulte Realización de consultas WMI en C++ en CodeProject.

En el código siguiente, se solicita más de un objeto:
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;
}

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado wbemcli.h (include Wbemidl.h)
Library Wbemuuid.lib
Archivo DLL Fastprox.dll

Consulte también

Enumeración de WMI

IEnumWbemClassObject