描述
来源调用IWbemObjectSink.SetStatus方法以指示通知序列的结束,或者将其他状态代码发送到接收器。IWbemObjectSink.Indicate方法可能已经或可能不会在调用SetStatus之前调用。
通常,客户端实现IWbemObjectSink接口,并执行IWbemServices使用IWbemObjectSink接口返回其结果的方法。在此操作期间,WMI根据需要调用表明次,最后调用SetStatus,并在许多情况下发布.
C++ 语法
HRESULT SetStatus( [in] LONG lFlags, [in] HRESULT hResult, [in] BSTR strParam, [in] IWbemClassObject *pObjParam ); |
PowerBASIC 语法
METHOD SetStatus ( _ BYVAL lFlags AS LONG, _ BYVAL lFlags AS LONG, _ BYVAL strParam AS DWORD, _ BYVAL pObjParam AS IWbemClassObject _ ) AS LONG |
参数
lFlags
位掩码的状态信息。通过检查HRESULT参数可以获得操作的状态。
值 |
含义 |
WBEM_STATUS_COMPLETE |
操作已经完成。 |
WBEM_STATUS_PROGRESS |
行动仍在进行中。 |
WBEM_STATUS_REQUIREMENTS |
用于激活后置过滤。 |
hResult
该参数设置为异步操作或通知的HRESULT.这是错误代码,如果发生错误,或异步调用进行的进度。
strParam
接收到只读BSTR的指针,如果原始异步操作返回一个字符串。例如,当使用PutInstanceAsync时,SetStatus被调用,此参数设置为新创建的实例的对象路径。
pObjParam
在返回复杂错误或状态对象的情况下,它包含指向错误对象的指针。如果SetStatus返回后需要该对象,被调用对象必须在被调用对象返回之前使用指针上的AddRef方法。
返回值
此方法返回一个HRESULT,表示方法调用的状态。下表列出了HRESULT中包含的值。
退货代码 |
描述 |
WBEM_E_FAILED |
接收方无法正确处理通知。 |
WBEM_E_INVALID_PARAMETER |
指定了无效参数。 |
WBEM_S_NO_ERROR |
电话成功接收方确认通知。 |
备注
在实现事件订阅接收器(IWbemObjectSink或IWbemEventSink)时,不要从接收器对象的SetStatus方法中调用WMI。例如,从SetStatus的实现中调用IWbemServices.CancelAsyncCall可能会干扰WMI状态。要取消事件订阅,请设置一个标志,并从另一个线程或对象调用IWbemServices.CancelAsyncCall.对于与事件接收器无关的实现(如对象,枚举和查询检索),可以回调到WMI。
Sink实现应该在100 MSEC内处理事件通知,因为传递事件通知的WMI线程在宿对象完成处理之前无法执行其他工作。如果通知需要大量处理,则宿可以使用另一个线程的内部队列来处理该处理。对于与事件接收器无关的实现(如对象,枚举和查询检索),可以回调到WMI。
要通过客户端的SetStatus实现接收中间状态更新,必须在调用provider / service方法时指定WBEM_FLAG_SENT_STATUS。可以通过单独检查hResult的HIWORD和LOWORD值来确定确切的状态。LOWORD(hResult)值包含到目前为止进行的进度,HIWORD(hResult)值包含总数。
如果在调用您的提供商或服务方法时未指定WBEM_FLAG_SEND_STATUS,则您可以保证仅接收一个来电SetStatus.
要求
客户 |
需要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.h声明包括Wbemidl.h。 |
图书馆 |
使用Wbemuuid.lib。 |
DLL |
需要Esscli.dll。 需要Fastprox.dll。 需要Wbemess.dll。 |