勇芳软件工作室.汉化:  Windows Management Instrumentation > COM API for WMI > Interfaces > IWbemObjectSink >

SetStatus Method

Previous pageReturn to chapter overviewNext page

描述

 

来源调用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

电话成功接收方确认通知。

 

备注

 

在实现事件订阅接收器(IWbemObjectSinkIWbemEventSink)时,不要从接收器对象的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。