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

此标志会导致返回仅向前枚举器。 仅向前枚举器通常比传统枚举器快得多,使用的内存更少,但不允许调用 CloneReset

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

另请参阅

IWbemServices

IWbemServices::ExecQueryAsync

使用 WQL 查询