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


Интерфейс IEnumWbemClassObject (wbemcli.h)

Интерфейс IEnumWbemClassObject используется для перечисления объектов CIM и аналогичен стандартному перечислительу COM.

Объект типа IEnumWbemClassObject получается из вызовов следующих методов:

Объекты CIM извлекаются из перечисления как объекты типа IWbemClassObject путем вызова метода Next . Можно сбросить перечисление обратно в начало, вызвав метод Reset .

Наследование

Интерфейс IEnumWbemClassObject наследуется от интерфейса IUnknown . IEnumWbemClassObject также имеет следующие типы элементов:

Методы

Интерфейс IEnumWbemClassObject содержит следующие методы.

 
IEnumWbemClassObject::Clone

Метод IEnumWbemClassObject::Clone создает логическую копию всего перечислителя, сохраняя его текущую позицию в перечислении.
IEnumWbemClassObject::Next

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

Используйте метод NextAsync, если требуется управляемое асинхронное извлечение объектов в приемник.
IEnumWbemClassObject::Reset

Метод IEnumWbemClassObject::Reset сбрасывает последовательность перечисления обратно в начало. Так как объекты CIM являются динамическими, вызов этого метода не обязательно возвращает тот же список объектов, который вы получили ранее.
IEnumWbemClassObject::Skip

Метод IEnumWbemClassObject::Skip можно использовать для перемещения текущей позиции в перечислении вперед на указанное количество объектов. Кроме того, это влияет на последующие вызовы NextAsync, но не влияет на ожидающие поставки, начатые с помощью NextAsync.

Комментарии

IEnumWbemClassObject — это объект, возвращаемый из запроса WMI, и используется для перечисления возвращаемых значений. Дополнительные сведения об использовании этого класса см. в разделах Запрос WMI и Перечисление WMI.

Примеры

В следующем примере кода C++ описывается, как получить IEnumWbemClassObject.

void ExecQuerySync(IWbemServices *pSvc)
{
    // Query for all users and groups.

    BSTR Language = SysAllocString(L"WQL");
    BSTR Query = SysAllocString(L"SELECT * FROM __Namespace");

    // Initialize the IEnumWbemClassObject pointer.
    IEnumWbemClassObject *pEnum = 0;

    // Issue the query.
    HRESULT hRes = pSvc->ExecQuery(
        Language,
        Query,
        WBEM_FLAG_FORWARD_ONLY,         // Flags
        0,                              // Context
        &pEnum
        );

    SysFreeString(Query);
    SysFreeString(Language);

    if (hRes != 0)
    {
        printf("Error\n");
        return;
    }
    
    ULONG uTotal = 0;

    // Retrieve the objects in the result set.
    for (;;)
    {
        IWbemClassObject *pObj = 0;
        ULONG uReturned = 0;

        hRes = pEnum->Next(
            0,                  // Time out
            1,                  // One object
            &pObj,
            &uReturned
            );

        uTotal += uReturned;

        if (uReturned == 0)
            break;

        // Use the object.
        
        // ...
        
        // Release it.
        // ===========
        
        pObj->Release();    // Release objects not owned.            
    }

    // All done.
    pEnum->Release();
}

Требования

   
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header wbemcli.h (включая Wbemidl.h)

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

COM API для WMI

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