IWbemEventProviderQuerySink::NewQuery 方法 (wbemprov.h)
当逻辑事件使用者向 Windows 管理注册相关事件查询筛选器时,调用 IWbemEventProviderQuerySink::NewQuery 方法。 NewQuery 方法确定提供程序如何响应客户端应用程序注册的新查询。 当 WMI 从使用者接收新的或修改的事件查询时,WMI 会调用 NewQuery 以将查询回显到事件提供程序。 然后,提供程序生成请求的通知。
语法
HRESULT NewQuery(
[in] unsigned long dwId,
[in] WBEM_WSTR wszQueryLanguage,
[in] WBEM_WSTR wszQuery
);
参数
[in] dwId
Windows 管理为查询生成的标识符。 提供程序可以跟踪此查询,以便在以后调用 CancelQuery 期间,以便提供程序知道哪个查询已取消。
[in] wszQueryLanguage
以下查询筛选器的语言。 对于此版本的 WMI,它将始终为“WQL”。
[in] wszQuery
由逻辑使用者注册的事件查询筛选器的文本。 事件提供程序可以通过 wszQuery 参数和 wszQueryLanguage 参数中查询筛选器的语言检查查询筛选器的文本,以发现使用者请求的事件通知。
返回值
此方法返回指示方法调用状态的 HRESULT。 以下列表列出了 NewQuery 返回的返回代码。 此外,第三方事件提供程序可以返回任何有效的 WMI 或 COM 返回代码,这些代码可通过 NewQuery 作为返回值传递。
注解
如果使用者向 Windows 管理注册事件筛选器查询,并且查询包含对当前事件提供程序提供的事件的引用,则 Windows 管理可以通知事件提供程序查询。
如果提供程序实现 IWbemEventProviderQuerySink 接口,Windows Management 将向提供程序提供查询文本的副本。 提供程序应分析查询,并确定它是否可以执行任何内部优化。
Windows 管理不希望提供程序以任何方式更改其行为。 相反,这是一个咨询调用,以帮助提供程序进行内部优化。
例如,如果提供程序能够提供数百个事件,但提供所有这些事件所需的开销很大,那么,如果提供程序知道当前事件使用者集不需要其中大多数事件,则可以节省大量费用。 如果提供程序实现 IWbemEventProviderQuerySink,它将知道所有使用者请求的当前事件集。 在使用者实际开始请求此类事件之前,它可以避免设置用于传递它支持的大部分事件类型的机制。
对于每个新的使用者查询筛选器,将使用唯一的 dwId 单独调用此方法。 请注意,Windows 管理保留针对同一 dwId 值多次调用 NewQuery 的权利;例如,如果系统中的其他位置存在架构更改。 对于此版本的 WMI,查询语言始终为“WQL”。
可以在 IWbemEventProvider::P rovideEvents 方法之前调用 IWbemEventErQuerySink::NewQuery 方法。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | wbemprov.h (包括 Wbemidl.h) |
Library | Wbemuuid.lib |
DLL | Wbemsvc.dll |