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

Indicate Method

Previous pageReturn to chapter overviewNext page

描述

 

源调用表明方法来提供通知。通常,在客户端执行IWbemServices的异步方法之一之后,WMI会调用此接口的客户机实现。在其他情况下,各种类型的提供程序调用由WMI导出的实现来传递事件。因此,在某些情况下,客户端代码可能必须实现此接口,并在其他情况下使用不同的组件实现。

 

将此接口和方法与IWbemServices接口的异步方法结合使用。

 

客户端和提供者必须实现此接口来接收通知或执行IWbemServices的异步方法。

 

C++ 语法

 

HRESULT Indicate(

[in]  LONG lObjectCount,

[in]  IWbemClassObject **ppObjArray

);

 

PowerBASIC 语法

 

METHOD Indicate ( _

BYVAL lObjectCount AS LONG, _

BYREF ppObjArray AS IWbemClassObject _

) AS LONG

 

参数

 

lObjectCount

 

下列数组指针中的对象数。

 

ppObjArray

 

指向IWbemClassObject接口的指针数组。阵列存储器本身是只读的,由方法的调用者拥有。因为这是一个in参数,所以实现可以选择在数组中的任何一个对象指针上调用IWbemClassObject.AddRef,如果在方法返回之后,根据COM规则,在对象返回之前保持它。如果对象仅用于指示调用的持续时间,则不需要在每个对象指针上调用AddRef.

 

返回值

 

此方法返回一个HRESULT,表示方法调用的状态。下表列出了HRESULT中包含的值。

 

退货代码

描述

WBEM_E_FAILED

接收方无法正确处理通知。

WBEM_E_CALL_CANCELLED

操作已被取消,供应商应停止执行。

WBEM_E_INVALID_PARAMETER

指定了无效参数,例如NULL ppObjArray指针。

WBEM_S_NO_ERROR

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

 

备注

 

当实现事件订阅接收器(IWbemObjectSinkIWbemEventSink)时,不要在接收器对象的表明方法内调用WMI。例如,从指示的实现中调用IWbemServices.CancelAsyncCall可能会干扰WMI状态。要取消事件订阅,请设置一个标志,并从另一个线程或对象调用IWbemServices.CancelAsyncCall.对于与事件接收器无关的实现(如对象,枚举和查询检索),可以回调到WMI。

 

Sink实现应该在100 MSEC内处理事件通知,因为传递事件通知的WMI线程在宿对象完成处理之前无法执行其他工作。如果通知需要大量处理,则宿可以使用另一个线程的内部队列来处理该处理。

 

当事件提供者调用表明提供事件时,调用可能会失败,并且WBEM_E_SERVER_TOO_BUSY。提供者可以选择通过重新触发该事件来响应此消息。

 

注意由于对客户端的回调可能不会按照客户端要求的相同身份验证级别返回,建议您使用半异步而不是异步通信。

 

要求

 

客户

需要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

需要Esscli.dll。

需要Fastprox.dll。

需要Wbemess.dll。