描述
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。 |