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 方法返回一个 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 |