IWbemServices::ExecNotificationQueryAsync 方法 (wbemcli.h)

IWbemServices::ExecNotificationQueryAsync 方法执行与 IWbemServices::ExecNotificationQuery 相同的任务,只不过事件将提供给指定的响应处理程序,直到调用 CancelAsyncCall 以停止事件通知。

语法

HRESULT ExecNotificationQueryAsync(
  [in] const BSTR      strQueryLanguage,
  [in] const BSTR      strQuery,
  [in] long            lFlags,
  [in] IWbemContext    *pCtx,
  [in] IWbemObjectSink *pResponseHandler
);

参数

[in] strQueryLanguage

包含 Windows 管理支持的查询语言之一的有效 BSTR 。 这必须是“WQL”。

[in] strQuery

包含事件相关查询文本的有效 BSTR 。 这不能为 NULL。 若要详细了解如何生成 WMI 查询字符串,请查看使用 WQL 进行查询WQL 参考。

[in] lFlags

此参数可以是以下值。

WBEM_FLAG_SEND_STATUS

此标志向 Windows 管理注册通过客户端实现 的 IWbemObjectSink::SetStatus 接收中间状态报告的请求。 提供程序实现必须支持此标志的中间状态报告才能更改行为。

[in] pCtx

通常 为 NULL。 否则,这是指向 IWbemContext 对象的指针,该对象可由返回所请求事件的提供程序使用。 上下文对象中的值必须在相关提供程序的文档中指定。 有关此参数的详细信息,请参阅 调用 WMI

[in] pResponseHandler

指向调用方实现 IWbemObjectSink 的指针。 当查询结果集中的对象变为可用时,此处理程序将接收这些对象。 若要停止接收事件,调用方必须使用 pResponseHandler 的相同指针值调用 IWbemServices::CancelAsyncCall。 当事件可用时,将调用提供的 IWbemObjectSink::Indicate 实现来传递事件对象。 在任何时候都不会调用 IWbemObjectSink::SetStatus 方法,因为没有最终条件或终止条件。 调用将无限期执行,直到取消。 如果返回任何错误代码,则不使用提供的 IWbemObjectSink 指针。 如果返回 WBEM_S_NO_ERROR ,则调用用户的 IWbemObjectSink 实现来指示操作的结果。 Windows 管理仅在返回WBEM_S_NO_ERROR的情况下对指针调用 AddRef。 在错误代码返回的情况下,引用计数与输入时相同。 有关此参数的详细说明,请参阅 调用方法

返回值

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

失败时,可以从 COM 函数 GetErrorInfo 获取任何可用信息。

其他错误代码将返回到 由 pResponseHandler 参数指定的对象接收器。

如果网络问题导致你失去与 Windows 管理的远程连接,也可以返回特定于 COM 的错误代码。

注解

调用 IWbemObjectSink::SetStatus 方法以指示结果集的结束。 还可以调用它,而无需干预调用 IWbemObjectSink::指示 是否发生错误条件。

由于回调可能不会在客户端所需的相同身份验证级别返回,因此建议使用半同步而不是异步通信。 如果需要异步通信,请参阅 调用方法

有关以半同步方式使用方法的详细信息,请参阅 IWbemServices::ExecNotificationQuery调用方法

可在 WQL 查询中使用的 AND 和 OR 关键字存在数量限制。 复杂查询中使用大量的 WQL 关键字可能导致 WMI 返回 WBEM_E_QUOTA_VIOLATION 错误代码作为 HRESULT 值。 WQL 关键字的限制取决于查询的复杂程度。

要求

   
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 wbemcli.h (包括 Wbemidl.h)
Library Wbemuuid.lib
DLL Fastprox.dll;Esscli.dll;FrameDyn.dll;FrameDynOS.dll;Ntevt.dll;Stdprov.dll;Viewprov.dll;Wbemcomn.dll;Wbemcore.dll;Wbemess.dll;Wbemsvc.dll;Wmipicmp.dll;Wmidcprv.dll;Wmipjobj.dll;Wmiprvsd.dll

另请参阅

调用方法

IWbemServices

IWbemServices::ExecQuery

接收事件通知

在应用程序持续时间内接收事件