Condividi tramite


Metodo IEnumWbemClassObject::Next (wbemcli.h)

Usare il metodo IEnumWbemClassObject::Next per ottenere uno o più oggetti a partire dalla posizione corrente in un'enumerazione. Questo metodo avanza la posizione corrente nell'enumerazione da oggetti uCount , in modo che le chiamate successive restituiscono gli oggetti successivi.

Sintassi

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

Parametri

[in] lTimeout

Specifica la quantità massima di tempo in millisecondi che i blocchi di chiamata prima di restituire. Se si usa la costante WBEM_INFINITE (0xFFFFFFFF ), i blocchi di chiamata fino a quando non sono disponibili oggetti. Se si usa il valore 0 (WBEM_NO_WAIT), la chiamata restituisce immediatamente, indipendentemente dal fatto che gli oggetti siano disponibili o meno.

[in] uCount

Numero di oggetti richiesti.

[out] apObjects

Puntatore a una risorsa di archiviazione sufficiente per contenere il numero di puntatori di interfaccia IWbemClassObject specificati da uCount. Questa risorsa di archiviazione deve essere fornita dal chiamante. Questo parametro non può essere NULL. Il chiamante deve chiamare Release su ognuno dei puntatori di interfaccia ricevuti quando non sono più necessari.

[out] puReturned

Puntatore a un ULONG che riceve il numero di oggetti restituiti. Questo numero può essere minore del numero richiesto in uCount. Questo puntatore non può essere NULL.

Nota Il metodo Next restituisce WBEM_S_FALSE quando è stata raggiunta la fine dell'enumerazione, anche se gli oggetti sono stati restituiti correttamente. Il valore WBEM_S_NO_ERROR restituisce solo quando il numero di oggetti restituiti corrisponde al numero richiesto in uCount. Il valore WBEM_S_TIMEDOUT viene restituito quando il numero di oggetti restituiti è minore del numero richiesto, ma non alla fine dell'enumerazione. È pertanto consigliabile usare la logica di terminazione del ciclo che esamina il valore puReturned per assicurarsi di aver raggiunto la fine dell'enumerazione.
 

Valore restituito

Il metodo Next restituisce un valore HRESULT che indica lo stato della chiamata al metodo. L'elenco seguente elenca il valore contenuto in un HRESULT.

Commenti

È possibile che vengano visualizzati codici di errore specifici di COM se i problemi di rete causano la perdita della connessione remota a Gestione Windows. In caso di errore, è possibile chiamare la funzione COM GetErrorInfo per ottenere altre informazioni sull'errore.

Se viene richiesto più di un oggetto e se viene restituito il numero di oggetti richiesti, la funzione restituisce WBEM_S_NO_ERROR. Se è disponibile un numero inferiore al numero richiesto di oggetti e, se l'enumerazione è stata completata, tali oggetti vengono restituiti e la funzione restituisce WBEM_S_FALSE.

Se l'enumerazione non è stata completata, la chiamata attende che gli oggetti siano disponibili fino al timeout specificato. Se l'enumerazione si verifica prima che gli oggetti siano disponibili, la funzione restituisce WBEM_S_TIMEDOUT.

Nota Poiché il callback al sink potrebbe non essere restituito allo stesso livello di autenticazione richiesto dal client, è consigliabile usare semisynchrono anziché la comunicazione asincrona. Per altre informazioni, vedere Chiamata di un metodo.
 

Esempio

Per una discussione estesa e un esempio di esecuzione di query in C++ e WMI, vedere Creazione di query WMI in C++ in CodeProject.

Nel codice seguente viene richiesto più di un oggetto:
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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione wbemcli.h (include Wbemidl.h)
Libreria Wbemuuid.lib
DLL Fastprox.dll

Vedi anche

Enumerazione WMI

IEnumWbemClassObject