IWbemEventProviderQuerySink::NewQuery 方法 (wbemprov.h)

当逻辑事件使用者向 Windows Management 注册相关事件查询筛选器时,调用 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 管理将向提供程序提供查询文本的副本。 提供程序应分析查询,并确定它是否可以执行任何内部优化。

Windows 管理不希望提供程序以任何方式更改其行为。 相反,这是一个咨询调用,以帮助提供程序进行内部优化。

例如,如果提供程序能够提供数百个事件,但提供所有这些事件所需的开销很大,那么如果知道当前事件使用者不需要其中大多数事件,则提供程序可以实现大量节省。 如果提供程序实现 IWbemEventProviderQuerySink,它将知道所有使用者请求的当前事件集。 在使用者实际开始请求此类事件之前,它可以避免设置用于传递它支持的大多数事件类型的机制。

对于每个新的使用者查询筛选器,将使用唯一的 dwId 单独调用此方法。 请注意,Windows 管理保留针对同一 dwId 值多次调用 NewQuery 的权利;例如,如果系统中其他位置发生了架构更改。 对于此版本的 WMI,查询语言始终为“WQL”。

IWbemEventProviderQuerySink::NewQuery 方法可以在 IWbemEventProvider::P rovideEvents 方法之前调用。

要求

   
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 wbemprov.h (包括 Wbemidl.h)
Library Wbemuuid.lib
DLL Wbemsvc.dll

另请参阅

IWbemEventProviderQuerySink

IWbemEventProviderQuerySink::CancelQuery