描述
使用NextAsync方法时,需要控制异步检索对象到宿。正常的异步检索(例如调用IWbemServices.ExecQueryAsync)导致对象不受控制地传递给呼叫者的IWbemObjectSink实现。此方法对组件控制对象传递的情况非常有用。
C++ 语法
HRESULT NextAsync( [in] ULONG uCount, [in] IWbemObjectSink *pSink ); |
PowerBASIC 语法
METHOD NextAsync ( _ BYVAL uCount AS DWORD, _ BYVAL pSink AS IWbemObjectSink _ ) AS LONG |
参数
uCount
请求的对象数量
pSink
接收对象的接收。接收端必须由呼叫者实现。当请求每批对象时,它们将被传递到表明方法的pSink参数,然后最终调用SetStatus方法的pSink 参数。如果要用于传递对象,则该方法返回WBEM_S_NO_ERROR,即使要传递的对象数量少于请求的数量。但是,如果没有剩余的对象,则忽略pSink参数(不进行SetStatuspSink参数的调用)。相反,此方法返回WBEM_S_FALSE。
返回值
NextAsync方法返回一个HRESULT,表示方法调用的状态。下表列出了HRESULT中包含的值。
退货代码 |
描述 |
WBEM_E_FAILED |
通话失败,预计不会完成。 |
WBEM_E_INVALID_PARAMETER |
指定了无效参数。 |
WBEM_E_UNEXPECTED |
枚举中的对象已被删除,从而破坏了枚举的有效性。 |
WBEM_E_OUT_OF_MEMORY |
没有足够的内存来完成操作。 |
WBEM_E_TRANSPORT_FAILURE |
这表示当前进程和Windows Management之间的远程过程调用(RPC)链接失败。 |
WBEM_S_NO_ERROR |
成功返回一个或多个对象。如果比请求返回的对象少,则不会被视为错误。 |
WBEM_S_FALSE |
当没有更多的对象可用时返回。当为uCount参数调用此方法值为0时,也会返回该值。 |
备注
对COM函数GetErrorInfo的调用提供了有关错误的更多信息。如果网络问题导致您失去与Windows Management的远程连接,也可能会返回COM特定的错误代码。
此调用立即返回,并在后台发送到sink。如果从一个或多个线程对此方法进行多次调用,则它们在逻辑上排队,并保留调用和对象传递的顺序。对来自一个或多个线程块的此方法的多次调用不会返回,直到与此方法的先前调用相关的所有宿对象都已被服务为止。对重启的调用不会影响由于以前的呼叫而导致的正在进行的对象的传送。重启方法只会在对象序列开头引起新的调用。
如果请求对象的数量立即可用,函数返回WBEM_S_NO_ERROR。如果小于所请求对象的数量可用,则返回可用对象,并返回WBEM_S_NO_ERROR。剩余的物体由用户提供的水槽传送。
随着对象变得可用,调用者的IWbemObjectSink.Indicate的实现被称为零或更多次来传送对象。之后,如果返回uCount项,则调用IWbemObjectSink.SetStatus,值为WBEM_S_NO_ERROR。
如果比所请求的数量少的对象可用,则对于可用的对象,将调用表明.然后使用值WBEM_S_FALSE调用SetStatus,如果发生错误则调用错误代码。
如果请求的对象数量被传递,则最后一个对象后跟一个状态代码为WBEM_S_NO_ERROR的SetStatus.如果枚举在请求的对象数量可以传递之前完成,则SetStatus方法的状态代码为WBEM_S_FALSE。
如果没有可用对象,则不会调用指示。但是,始终发生对SetStatus的最终调用,以指示整个操作的状态。
因为回调可能不会在客户端要求的相同身份验证级别返回,建议您使用半异步而不是异步通信。如果需要异步通信,请参阅调用方法.
有关半同步使用方法的更多信息,请参阅IEnumWbemClassObject.Next和调用方法.
要求
客户 |
需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95。 |
服务器 |
需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。 |
头 |
在Wbemcli.inc中声明。 |
DLL |
需要Fastprox.dll。 |