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 |