Поделиться через


Метод IEnumWbemClassObject::Next (wbemcli.h)

Используйте метод IEnumWbemClassObject::Next , чтобы получить один или несколько объектов, начиная с текущей позиции перечисления. Этот метод перемещает текущую позицию в перечислении объектов uCount , чтобы последующие вызовы возвращали последующие объекты.

Синтаксис

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

Параметры

[in] lTimeout

Указывает максимальное время в миллисекундах, которое блокирует вызов перед возвратом. Если вы используете константную WBEM_INFINITE (0xFFFFFFFF), вызов блокируется, пока объекты не будут доступны. Если вы используете значение 0 (WBEM_NO_WAIT), вызов возвращается немедленно, независимо от того, доступны ли какие-либо объекты.

[in] uCount

Число запрошенных объектов.

[out] apObjects

Указатель на достаточный объем хранилища для хранения количества указателей интерфейса IWbemClassObject , заданных uCount. Это хранилище должно быть предоставлено вызывающим объектом. Этот параметр не может иметь значение NULL. Вызывающий объект должен вызывать Release для каждого из полученных указателей интерфейса, если они больше не нужны.

[out] puReturned

Указатель на ULONG , получающий количество возвращаемых объектов. Это число может быть меньше числа, запрошенного в uCount. Этот указатель не может иметь значение NULL.

Примечание Метод Next возвращает WBEM_S_FALSE по достижении конца перечисления, даже если объекты были успешно возвращены. Значение WBEM_S_NO_ERROR возвращается только в том случае, если количество возвращаемых объектов совпадает с числом, запрошенным в uCount. Значение WBEM_S_TIMEDOUT возвращается, если количество возвращаемых объектов меньше запрошенного числа, но вы не находитесь в конце перечисления. Поэтому следует использовать логику завершения цикла, которая проверяет значение puReturned , чтобы убедиться, что вы достигли конца перечисления.
 

Возвращаемое значение

Метод Next возвращает HRESULT , указывающий состояние вызова метода. В следующем списке перечислены значения, содержащиеся в HRESULT.

Комментарии

Если проблемы с сетью приводят к потере удаленного подключения к управлению Windows, могут отображаться коды ошибок, относящиеся к COM. При ошибке можно вызвать функцию COM GetErrorInfo , чтобы получить дополнительные сведения об ошибке.

Если запрашивается несколько объектов и возвращается количество запрошенных объектов, функция возвращает WBEM_S_NO_ERROR. Если доступно меньше запрошенного числа объектов и если перечисление завершено, эти объекты возвращаются, а функция возвращает WBEM_S_FALSE.

Если перечисление не завершено, вызов ожидает доступности объектов до указанного времени ожидания. Если время ожидания перечисления истекает, прежде чем объекты становятся доступными, функция возвращает WBEM_S_TIMEDOUT.

Примечание Так как обратный вызов в приемник может быть возвращен не на том же уровне проверки подлинности, который требуется клиенту, рекомендуется использовать полусинхронный режим вместо асинхронного взаимодействия. Дополнительные сведения см. в разделе Вызов метода .
 

Примеры

Подробное обсуждение и пример создания запросов в C++ и WMI см. в статье Создание запросов WMI в C++ в CodeProject.

В следующем коде запрашивается несколько объектов:
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;
}

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header wbemcli.h (включая Wbemidl.h)
Библиотека Wbemuuid.lib
DLL Fastprox.dll

См. также раздел

Перечисление WMI

IEnumWbemClassObject