IWbemObjectSink::Indicate 方法 (wbemcli.h)

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

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

客户端和提供程序必须实现此接口才能接收通知或执行 IWbemServices 的异步方法。 有关详细信息,请参阅调用方法

语法

HRESULT Indicate(
  [in] long             lObjectCount,
  [in] IWbemClassObject **apObjArray
);

参数

[in] lObjectCount

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

[in] apObjArray

指向 IWbemClassObject 接口的指针数组。 数组内存本身是只读的,由方法的调用方拥有。 由于这是一个 in 参数,因此实现可以选择对数组中的任何对象指针调用 IWbemClassObject::AddRef ,并在返回之前将其保存,前提是在方法返回后将使用这些对象(根据 COM 规则)。 如果对象仅用于 指示 调用的持续时间,则无需在每个对象指针上调用 AddRef

返回值

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

注解

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

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

当事件提供程序调用 指示 来提供事件时,调用可能会失败并 出现WBEM_E_SERVER_TOO_BUSY。 提供程序可以选择通过重新触发 事件来响应此消息。

注意 由于对接收器的回调可能不会在客户端要求的相同身份验证级别返回,因此建议使用半同步通信而不是异步通信。 有关详细信息,请参阅调用方法
 

要求

   
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 wbemcli.h (包括 Wbemidl.h)
Library Wbemuuid.lib
DLL Fastprox.dll

另请参阅

IWbemObjectSink

IWbemObjectSink::SetStatus

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync