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

ExecQuery Method

Previous pageReturn to chapter overviewNext page

描述

 

IWbemServices.ExecQuery方法执行查询来检索对象。

 

有关可执行的有效查询类型,请参阅使用WQL查询.

 

C++ 语法

 

HRESULT ExecQuery(

[in]   const BSTR strQueryLanguage,

[in]   const BSTR strQuery,

[in]   LONG lFlags,

[in]   IWbemContext *pCtx,

[out]  IEnumWbemClassObject **ppEnum

);

 

PowerBASIC 语法

 

METHOD ExecQuery ( _

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支持的查询语言之一。这必须是“WQL”,WMI查询语言的缩写。

 

strQuery

 

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

 

lFlags

 

以下标志影响此方法的行为。此参数的建议值为WBEM_FLAG_RETURN_IMMEDIATELY和WBEM_FLAG_FORWARD_ONLY以获得最佳性能。

 

含义

WBEM_FLAG_USE_AMENDED_QUALIFIERS

如果设置此标志,WMI将检索存储在当前连接的本地化名称空间中的修改后的限定符。如果未设置,则仅检索存储在立即命名空间中的限定符。

WBEM_FLAG_FORWARD_ONLY

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

WBEM_FLAG_BIDIRECTIONAL

此标志使Windows Management保留指向枚举对象的指针,直到客户端释放枚举器。

WBEM_FLAG_RETURN_IMMEDIATELY

这个标志使它成为一个半异步调用。有关详细信息,请参阅调用方法.

WBEM_FLAG_ENSURE_LOCATABLE

该标志确保任何返回的对象在其中具有足够的信息,以便系统属性(例如__PATH__RELPATH__SERVER)不为空。

WBEM_FLAG_PROTOTYPE

该标志用于原型设计。它不执行查询,而是返回一个看起来像典型结果对象的对象。

WBEM_FLAG_DIRECT_READ

该标志引起对指定类的提供者的直接访问,而不考虑其父类或子类。

 

pCtx

 

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

 

ppEnum

 

如果没有发生错误,它将接收枚举器,该枚举器允许调用者检索查询结果集中的实例。查询具有0个实例的结果集不是错误。这仅通过尝试遍历实例来确定。该对象返回一个正的引用计数。当不再需要该对象时,主叫方必须调用发布.

 

返回值

 

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

 

失败时,您可以从COM功能GetErrorInfo获取任何可用的信息。

 

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

 

退货代码

描述

WBEM_E_ACCESS_DENIED

当前用户没有权限查看结果集。

WBEM_E_FAILED

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

WBEM_E_INVALID_PARAMETER

指定了无效参数。

WBEM_E_INVALID_QUERY

该查询在语法上无效。

WBEM_E_INVALID_QUERY_TYPE

不支持请求的查询语言。

WBEM_E_OUT_OF_MEMORY

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

WBEM_E_SHUTTING_DOWN

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

WBEM_E_TRANSPORT_FAILURE

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

WBEM_E_NOT_FOUND

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

WBEM_S_NO_ERROR

通话成功。

 

备注

 

IWbemServices.ExecQuery方法处理在strQuery参数中指定的查询,并创建一个枚举器,调用者可以通过该枚举器访问查询结果。枚举器是一个指向IEnumWbemClassObject接口的指针;查询结果是通过IWbemClassObject接口提供的类对象的实例。

 

在WQL查询中可以使用的AND和OR关键字的数量有限制。复杂查询中使用的大量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。