IEnumWbemClassObject 接口 (wbemcli.h)

IEnumWbemClassObject 接口用于枚举公共信息模型 (CIM) 对象,类似于标准 COM 枚举器。

从对以下方法的调用接收 IEnumWbemClassObject 类型的对象:

通过调用 Next 方法,从枚举中检索 CIM 对象作为 IWbemClassObject 类型的对象。 可以通过调用 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
标头 wbemcli.h (包括 Wbemidl.h)

另请参阅

适用于 WMI 的 COM API

枚举 WMI