SWbemServices.ExecQueryAsync 方法

SWbemServices 对象的 ExecQueryAsync 方法会执行查询来检索对象。 对此方法的调用会立即返回,结果和状态会通过传送到 objWbemSink 中指定的接收器的事件返回给调用方。 若要处理每个返回的对象,请创建 objWbemSink.OnObjectReady 事件子例程。

此方法在异步模式下调用。 有关详细信息,请参阅调用方法

有关此语法的说明,请参阅脚本 API 的文档约定

语法

objWbemObjectSet = .ExecQueryAsync( _
  [ ByVal objWbemSink ], _
  ByVal strQuery, _
  [ ByVal strQueryLanguage ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

parameters

objWbemSink [可选]

异步执行查询的对象接收器。 创建 SWbemSink 对象来接收对象。

strQuery

必需。 包含查询文本的字符串。 此参数不能为空。 若要详细了解如何生成 WMI 查询字符串,请查看使用 WQL 进行查询WQL 参考。

strQueryLanguage [可选]

包含要使用的查询语言的字符串。 如果指定此项,则值必须为“WQL”。

iFlags [可选]

确定查询行为的整数。 此参数可以接受以下值。

wbemFlagSendStatus (128 (0x80))

使异步调用将状态更新发送到对象接收器的 OnProgress 事件处理程序。

wbemFlagDontSendStatus (0 (0x0))

防止异步调用将状态更新发送到对象接收器的 OnProgress 事件处理程序。

wbemQueryFlagPrototype (2 (0x2))

用于原型。 它会阻止查询发生,返回一个看起来像典型结果对象的对象。

wbemFlagUseAmendedQualifiers (131072 (0x20000))

使 WMI 返回具有基类定义的类修改数据。 有关详细信息,请参阅本地化 WMI 类信息

objwbemNamedValueSet [可选]

通常,未定义此参数。 但如果定义它,则它是一个 SWbemNamedValueSet 对象,其元素表示可供处理请求的提供程序使用的上下文信息。 支持或需要上下文信息的提供程序必须记录已识别的值名称、值数据类型、允许的值和语义。

objWbemAsyncContext [optional]

这是一个 SWbemNamedValueSet 对象,它返回到对象接收器以确定原始异步调用的源。 若要使用同一对象接收器进行多个异步调用,请使用此参数。 若要使用此参数,请创建 SWbemNamedValueSet 对象,并使用 SWbemNamedValueSet.Add 方法添加一个值,该值标识即将进行的异步调用。 此 SWbemNamedValueSet 对象会返回到对象接收器,而调用的源则可以使用 SWbemNamedValueSet.Item 方法提取。 有关详细信息,请参阅调用方法

返回值

此方法没有返回值。 如果成功,接收器会收到每个实例的 OnObjectReady 事件。 在最后一个实例之后,对象接收器会收到 OnCompleted 事件。

错误代码

ExecQueryAsync 方法完成后,Err 对象可能会包含以下列表中的错误代码之一。

wbemErrAccessDenied - 2147749891 (0x80041003)

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

wbemErrFailed - 2147749889 (0x80041001)

错误。

wbemErrInvalidParameter - 2147749896 (0x80041008)

指定的参数无效。

wbemErrInvalidQuery - 2147749911 (0x80041017)

查询语法无效。

wbemErrInvalidQueryType - 2147749912 (0x80041018)

不支持请求的查询语言。

wbemErrOutOfMemory - 2147749894 (0x80041006)

内存不足,无法完成此操作。

备注

立即返回此调用。 请求的对象和状态通过回调返回给调用方,该回调传递到 objWbemSink 中指定的接收器。 若要在每个对象返回时对其进行处理,请创建 objWbemSink.OnObjectReady 事件子例程。 返回所有对象后,请在 objWbemSink.OnCompleted 事件的实现中执行最终处理。

使用异步回调时,未经身份验证的用户可以向接收器提供数据。 这会给脚本和应用程序带来安全风险。 若要消除这些风险,请参阅设置异步调用的安全性

当没有对象与查询中的条件匹配时,ExecQueryAsync 方法会返回空的结果集。 不管是否在 strQuery 参数中请求了 Key 属性,此方法都会返回键属性。

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

要求

要求
最低受支持的客户端
Windows Vista
最低受支持的服务器
Windows Server 2008
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

另请参阅

SWbemServices

调用方法

SWbemServices.Get