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_IMMEDIATELY 和 WBEM_FLAG_FORWARD_ONLY ,否则调用将失败。
WBEM_FLAG_FORWARD_ONLY
此标志会导致返回仅向前枚举器。 仅向前枚举器通常比传统枚举器快得多,使用的内存更少,但不允许调用 Clone 或 Reset。
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 |