IEnumWbemClassObject::NextAsync 方法 (wbemcli.h)
当需要对接收器的对象进行受控异步检索时,请使用 NextAsync 方法。 正常的异步检索(例如调用 IWbemServices::ExecQueryAsync)会导致对象不受控制地传递到调用方实现 的 IWbemObjectSink。 此方法适用于组件控制对象传送的情况。
语法
HRESULT NextAsync(
[in] ULONG uCount,
[in] IWbemObjectSink *pSink
);
参数
[in] uCount
请求的对象数。
[in] pSink
接收器以接收对象。 接收器必须由调用方实现。 当请求每批对象时,它们将传递到指示方法的 pSink 参数,然后最后调用 SetStatus 方法的 pSink 参数。 如果要使用接收器传递对象,此方法将返回 WBEM_S_NO_ERROR,即使要传递的对象数小于请求的数量也是如此。 但是,如果没有其他对象,则忽略 pSink 参数 (不调用 SetStatus 的 pSink 参数) 。 相反,此方法返回 WBEM_S_FALSE。
返回值
NextAsync 方法返回一个 HRESULT,指示方法调用的状态。 以下列表列出了 HRESULT 中包含的值。
注解
调用 COM 函数 GetErrorInfo 提供有关错误的详细信息。 如果网络问题导致你失去与 Windows 管理的远程连接,也可能返回特定于 COM 的错误代码。
此调用会立即返回,并在后台传送到接收器。 如果从一个或多个线程对此方法进行多次调用,则它们在逻辑上排队,并保留调用和对象传递的顺序。 从一个或多个线程块对此方法进行的多次调用不会返回,直到与以前对此方法的调用相关的所有接收器对象都已得到服务。 调用 Reset 不会影响由于以前的调用而当前正在进行的对象的传递。 Reset 方法仅导致新调用在对象序列的开头启动。
如果请求的对象数立即可用,则函数将返回 WBEM_S_NO_ERROR。 如果可用对象数少于请求的对象数,则返回可用对象并返回 WBEM_S_NO_ERROR 。 其余对象由用户提供的接收器传递。
当对象变为可用时,调用方对 IWbemObjectSink::Indicate 的实现将调用零次或多次来传递对象。 随后调用 IWbemObjectSink::SetStatus,如果返回 uCount 项,其值为 WBEM_S_NO_ERROR。
如果可用对象数少于请求的数量,则为可用的对象调用 指示 。 然后,使用 WBEM_S_FALSE 或错误代码(如果发生错误)调用 SetStatus。
如果传递了请求的对象数,则最终对象后会调用状态代码为 WBEM_S_NO_ERROR的 SetStatus。 如果枚举在可以传递所请求数量的对象之前完成, 则 SetStatus 方法的状态代码为 WBEM_S_FALSE。
如果没有可用的对象,则不调用 指示 。 但是,始终会调用 SetStatus 以指示整个操作的状态。
由于回调可能不会在客户端所需的相同身份验证级别返回,因此建议使用半同步通信而不是异步通信。 如果需要异步通信,请参阅 调用方法。
有关以半同步方式使用方法的详细信息,请参阅 IEnumWbemClassObject::Next 和 调用方法。
要求
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | wbemcli.h (包括 Wbemidl.h) |
Library | Wbemuuid.lib |
DLL | Fastprox.dll |