IWbemServices::ExecQuery 方法 (wbemcli.h)
IWbemServices::ExecQuery 方法执行查询以检索对象。
有关可以执行的查询的有效类型,请参阅 使用 WQL 进行查询。
语法
HRESULT ExecQuery(
[in] const BSTR strQueryLanguage,
[in] const BSTR strQuery,
[in] long lFlags,
[in] IWbemContext *pCtx,
[out] IEnumWbemClassObject **ppEnum
);
参数
[in] strQueryLanguage
包含 Windows 管理支持的查询语言之一的有效 BSTR 。 这必须是“WQL”,即 WMI 查询语言的首字母缩略词。
[in] strQuery
包含查询文本的有效 BSTR 。 此参数不能为 NULL。 若要详细了解如何生成 WMI 查询字符串,请查看使用 WQL 进行查询和 WQL 参考。
[in] lFlags
以下标志影响此方法的行为。 此参数的建议值为 WBEM_FLAG_RETURN_IMMEDIATELY , 并且WBEM_FLAG_FORWARD_ONLY ,以便获得最佳性能。
WBEM_FLAG_USE_AMENDED_QUALIFIERS
如果设置了此标志,WMI 将检索存储在当前连接区域设置的本地化命名空间中的修改后的限定符。 如果未设置,则仅检索存储在直接命名空间中的限定符。
WBEM_FLAG_FORWARD_ONLY
此标志会导致返回仅向前枚举器。 仅向前枚举器通常比传统枚举器快得多,使用的内存更少,但不允许调用 Clone 或 Reset。
WBEM_FLAG_BIDIRECTIONAL
此标志使 Windows 管理保留指向枚举对象的指针,直到客户端释放枚举器。
WBEM_FLAG_RETURN_IMMEDIATELY
此标志导致此为半同步调用。 有关详细信息,请参阅调用方法。
WBEM_FLAG_ENSURE_LOCATABLE
此标志可确保任何返回的对象在它们中具有足够的信息,以便系统属性(如 __PATH、 __RELPATH 和 __SERVER)为非 NULL。
WBEM_FLAG_PROTOTYPE
此标志用于获取原型。 它不会执行查询,而是会返回类似于典型结果对象的对象。
WBEM_FLAG_DIRECT_READ
此标志导致直接访问指定的类的提供程序,而不考虑其父类或子类。
[in] pCtx
通常 为 NULL。 否则,这是指向 IWbemContext 对象的指针,可供提供所请求的类或实例的提供程序使用。 上下文对象中的值必须在相关提供程序的文档中指定。 有关此参数的详细信息,请参阅 调用 WMI。
[out] ppEnum
如果未发生错误,则会接收枚举器,该枚举器允许调用方检索查询结果集中的实例。 如果查询的结果集包含 0 个实例,则不是错误。 这只能通过尝试循环访问实例来确定。 此对象返回的引用计数为正。 当不再需要对象时,调用方必须调用 Release 。
返回值
此方法返回指示方法调用状态的 HRESULT。 以下列表列出了 HRESULT 中包含的值。
如果失败,可以从 COM 函数 GetErrorInfo 获取任何可用信息。
如果网络问题导致你失去与 Windows Management 的远程连接,也可以返回特定于 COM 的错误代码。
注解
IWbemServices::ExecQuery 方法处理 strQuery 参数中指定的查询,并创建一个枚举器,调用方可通过该枚举器访问查询结果。 此枚举器是指向 IEnumWbemClassObject 接口的一个指针;查询结果是通过 IWbemClassObject 接口提供的类对象的实例。
可在 WQL 查询中使用的“AND”和“OR”关键字的数量有限制。 复杂查询中使用大量的 WQL 关键字可能导致 WMI 返回 WBEM_E_QUOTA_VIOLATION 错误代码作为 HRESULT 值。 WQL 关键字的限制取决于查询的复杂程度。
要求
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | wbemcli.h (包括 Wbemidl.h) |
Library | Wbemuuid.lib |
DLL | Fastprox.dll;Esscli.dll;FrameDyn.dll;FrameDynOS.dll;Ntevt.dll;Stdprov.dll;Viewprov.dll;Wbemcomn.dll;Wbemcore.dll;Wbemess.dll;Wbemsvc.dll;Wmipicmp.dll;Wmidcprv.dll;Wmipjobj.dll;Wmiprvsd.dll |