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

ExecNotificationQuery Method

Previous pageReturn to chapter overviewNext page

描述

 

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

 

C++ 语法

 

HRESULT ExecNotificationQuery(

[in]   const BSTR strQueryLanguage,

[in]   const BSTR strQuery,

[in]   long lFlags,

[in]   IWbemContext *pCtx,

[out]  IEnumWbemClassObject **ppEnum

);

 

PowerBASIC 语法

 

METHOD ExecNotificationQuery ( _

BYVAL strQueryLanguage AS DWORD, _

BYVAL strQuery AS DWORD, _

BYVAL lFlags AS LONG, _

BYVAL pCtx AS IWbemContext, _

BYREF ppEnum AS IEnumWbemClassObject _

) AS LONG

 

参数

 

strQueryLanguage

 

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

 

strQuery

 

有效BSTR包含事件相关查询的文本。这不能为NULL。

 

lFlags

 

必须将此参数设置为WBEM_FLAG_RETURN_IMMEDIATELY和WBEM_FLAG_FORWARD_ONLY或调用失败。

 

含义

WBEM_FLAG_FORWARD_ONLY

此标志导致返回仅向前枚举器。前向枚举器通常比传统枚举器更快,使用更少的内存,但不允许调用克隆重启.

WBEM_FLAG_RETURN_IMMEDIATELY

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

 

pCtx

 

通常为NULL;否则,这是指向可以由执行方法的提供者使用的IWbemContext对象的指针。必须在相关提供者的文档中指定上下文对象中的值。有关此参数的更多信息,请参阅拨打电话给WMI.

 

ppEnum

 

如果没有发生错误,该参数将接收枚举器,该枚举器允许调用者检索查询结果集中的实例。来电者定期调用IEnumWbemClassObject.Next查看是否有任何事件可用。请注意,在此用法中,重启不会将枚举器移回事件序列的开头;它没有效果。该参数可以继续接收事件,直到在返回的枚举器上调用发布.

 

返回值

 

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

 

失败后,您可以从COM函数GetErrorInfo获取任何可用的信息。

 

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

 

退货代码

描述

WBEM_E_ACCESS_DENIED

当前用户无权查看结果集。

WBEM_E_FAILED

这表示其他未指定的错误。

WBEM_E_INVALID_CLASS

该查询指定一个不存在的类。

WBEM_E_INVALID_PARAMETER

指定了无效参数。

WBEM_E_REGISTRATION_TOO_PRECISE

已经要求提供事件精度太高。必须指定较大的轮询容限。

WBEM_E_REGISTRATION_TOO_BROAD

查询请求比Windows Management可以合理提供的更多信息。当事件查询导致轮询命名空间中的所有对象的请求时,返回此消息。

WBEM_E_INVALID_QUERY

该查询在语法上无效。

WBEM_E_INVALID_QUERY_TYPE

不支持请求的查询语言。

WBEM_E_OUT_OF_MEMORY

没有足够的内存来完成操作。

WBEM_E_TRANSPORT_FAILURE

这表示当前进程和Windows Management之间的远程过程调用(RPC)链接失败。

WBEM_E_SHUTTING_DOWN

Windows管理服务已停止并重新启动。需要新的电话ConnectServer.

WBEM_E_UNPARSABLE_QUERY

查询无法解析。

WBEM_S_NO_ERROR

通话成功。

 

备注

 

对于可在WQL查询中使用的ANDOR关键字的数量有限制。在复杂查询中使用的大量WQL关键字可能导致WMI返回作为HRESULT值的WBEM_E_QUOTA_VIOLATION错误代码。WQL关键字的限制取决于查询的复杂程度。

 

要求

 

客户

需要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及更高版本。

在Wbemcli.inc中声明。

DLL

需要Fastprox.dll。

需要Esscli.dll。

需要Framedyn.dll。

需要Ntevt.dll。

需要Stdprov.dll。

需要Viewprov.dll。

需要Wbemcomn.dll。

需要Wbemcore.dll。

需要Wbemess.dll。

需要Wbemsvc.dll。

需要Wmipicmp.dll。

需要Wmidcprv.dll。

需要Wmipjobj.dll。

需要Wmiprvsd.dll。