勇芳软件工作室.汉化:  Windows Management Instrumentation > COM API for WMI > Interfaces > IWbemEventProviderQuerySink >

NewQuery Method

Previous pageReturn to chapter overviewNext page

描述

 

当逻辑事件使用者向Windows Management注册相关事件查询过滤器时,调用IWbemEventProviderQuerySink.NewQuery方法。NewQuery方法确定提供商如何响应客户端应用程序注册的新查询。当WMI从消费者接收到新的或修改的事件查询时,WMI调用NewQuery将查询回显给事件提供者。提供商然后生成请求的通知。

 

C++ 语法

 

HRESULT NewQuery(

[in]  unsigned long dwId,

[in]  WBEM_WSTR wszQueryLanguage,

[in]  WBEM_WSTR wszQuery

);

 

PowerBASIC 语法

 

METHOD NewQuery ( _

BYVAL dwId AS DWORD, _

BYVAL wszQueryLanguage AS DWORD, _

BYVAL wszQuery AS DWORD _

) AS LONG

 

参数

 

dwId

 

Windows管理生成的查询标识符。提供商可以跟踪这一点,以便在以后调用CancelQuery时,提供商将知道哪个查询已被取消。

 

wszQueryLanguage

 

以下查询过滤器的语言。对于此版本的WMI,它将永远是“WQL”。

 

wszQuery

 

由逻辑消费者注册的事件查询过滤器的文本。事件提供者可以通过wszQuery参数和wszQueryLanguage参数中的查询过滤器的语言来检查查询过滤器的文本,以发现消费者正在请求哪些事件通知。

 

返回值

 

此方法返回一个HRESULT,指示方法调用的状态。下表列出了NewQuery返回的返回码。另外,第三方事件提供者可以返回可通过NewQuery作为返回值传递的任何有效的WMI或COM返回码。

 

退货代码

描述

WBEM_E_ACCESS_DENIED

用户没有权限访问该事件。

WBEM_E_FAILED

提供程序在内部失败,它不能接受将来的请求。

WBEM_E_INVALID_QUERY

该查询在语法上无效,或查询引用不存在的类,属性等。

WBEM_S_NO_ERROR

提供者收到水槽,它将开始交付事件。

 

备注

 

如果消费者在Windows Management中注册事件过滤器查询,并且查询包含对当前事件提供程序提供的事件的引用,则Windows Management可以通知事件提供者查询。

 

如果提供商实现IWbemEventProviderQuerySink接口,则Windows Management将向提供者提供查询文本的副本。提供程序应解析查询,并确定它是否可以执行任何内部优化。

 

Windows Management并不期望供应商以任何方式改变其行为。相反,这是一个咨询电话,以协助提供商进行内部优化。

 

例如,如果提供商能够提供数以百计的事件,但是提供所有这些事件所需的开销是巨大的,如果提供者知道大多数这些事件不是当前事件集所需要的,那么提供者可以实现大量的节省消费者。如果提供商实施IWbemEventProviderQuerySink,它将了解所有消费者所要求的当前事件集。它可以避免设置用于传递其支持的大多数事件类型的机制,直到消费者实际开始请求这样的事件。

 

对于每个新的消费者查询过滤器,将单独调用具有唯一dwId的此方法。请注意,Windows Management保留对相同dwId值多次调用NewQuery的权利;例如,如果系统中其他地方存在模式更改。对于此版本的WMI,查询语言始终为“WQL”。

 

IWbemEventProviderQuerySink.NewQuery方法可以在IWbemEventProvider.ProvideEvents方法之前调用。

 

要求

 

客户

需要Windows Vista,Windows XP,Windows 2000 Professional,Windows NT Workstation 4.0 SP4及更高版本,Windows Me,Windows 98或Windows 95。

服务器

需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。

在Wbemprov.inc中声明。

DLL

需要Wbemsvc.dll。