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

指向足够存储的指针,用于保存 uCount 指定的 IWbemClassObject 接口指针的数量。 此存储必须由调用方提供。 此参数不能为 NULL。 当不再需要每个接收的接口指针时,调用方必须调用 Release

[out] puReturned

指向 ULONG 的指针,该 ULONG 接收返回的对象数。 此数字可以小于 uCount 中请求的数字。 此指针不能为 NULL

注意 当你到达枚举的末尾时,即使成功返回对象, Next 方法也会返回 WBEM_S_FALSE 。 仅当返回的对象数与 uCount 中请求的数量匹配时,WBEM_S_NO_ERROR值才会返回。 当返回的对象数小于请求的数量,但您不在枚举末尾时,将返回 WBEM_S_TIMEDOUT 值。 因此,应使用检查 puReturned 值的循环终止逻辑,以确保已到达枚举的末尾。
 

返回值

Next 方法返回一个 HRESULT,指示方法调用的状态。 以下列表列出了 HRESULT 中包含的值。

注解

如果网络问题导致你失去与 Windows 管理的远程连接,你可能会看到返回特定于 COM 的错误代码。 出现错误时,可以调用 COM 函数 GetErrorInfo 以获取更多错误信息。

如果请求了多个对象,并且返回了请求的对象数,则函数将返回 WBEM_S_NO_ERROR。 如果可用对象数少于请求的数量,并且枚举已完成,则返回这些对象,函数返回 WBEM_S_FALSE

如果枚举尚未完成,则调用将等待对象在指定的超时之前可用。如果枚举在对象可用之前超时,函数将返回 WBEM_S_TIMEDOUT

注意 由于对接收器的回调可能不会在客户端所需的相同身份验证级别返回,因此建议使用半同步而不是异步通信。 有关详细信息,请参阅调用方法
 

示例

有关使用 C++ 和 WMI 进行查询的扩展讨论和示例,请参阅 CodeProject 上的在 C++ 中生成 WMI 查询

在以下代码中,请求多个对象:
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
标头 wbemcli.h (包括 Wbemidl.h)
Library Wbemuuid.lib
DLL Fastprox.dll

另请参阅

枚举 WMI

IEnumWbemClassObject