IWbemServices::ExecNotificationQuery 方法 (wbemcli.h)

IWbemServices::ExecNotificationQuery 方法执行查询以接收事件。 调用会立即返回,用户可以在事件到达时轮询返回的枚举器。 释放返回的枚举器将取消查询。

语法

HRESULT ExecNotificationQuery(
  [in]  const BSTR           strQueryLanguage,
  [in]  const BSTR           strQuery,
  [in]  long                 lFlags,
  [in]  IWbemContext         *pCtx,
  [out] IEnumWbemClassObject **ppEnum
);

参数

[in] strQueryLanguage

包含 Windows 管理支持的查询语言之一的有效 BSTR 。 这不能为 NULL。 目前,仅支持 WMI 查询语言 (WQL) 。

[in] strQuery

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

[in] lFlags

此参数必须同时设置为 WBEM_FLAG_RETURN_IMMEDIATELYWBEM_FLAG_FORWARD_ONLY ,否则调用将失败。

WBEM_FLAG_FORWARD_ONLY

此标志会导致返回仅向前枚举器。 仅向前枚举器通常比传统枚举器快得多,使用的内存更少,但不允许调用 CloneReset

WBEM_FLAG_RETURN_IMMEDIATELY

用户必须指定此标志,否则调用将失败。 这是因为事件是连续收到的,这意味着用户必须轮询返回的枚举器。 在等待可能的事件时无限期阻止此调用会无限期地阻止线程。 有关详细信息,请参阅调用方法

[in] pCtx

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

[out] ppEnum

如果未发生错误,此参数将接收枚举器,该枚举器允许调用方检索查询结果集中的实例。 调用方定期调用 IEnumWbemClassObject::Next 以查看是否有可用事件。 请注意,在此用法中, Reset 不会将枚举器移回事件序列的开头;它不起作用。 参数可以继续接收事件,直到对返回的枚举器调用 Release

返回值

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

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

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

注解

可在 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::ExecNotificationQueryAsync

使用 WQL 查询

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

检索错误代码