描述
SWbemServices对象的ExecQueryAsync方法执行检索对象的查询。对此方法的调用将立即返回,并且结果和状态将通过传递到objWbemSink中指定的接收器的事件返回给调用者。要处理每个返回的对象,请创建一个objWbemSink.??OnObjectReady事件子例程。
该方法在异步模式下被调用。有关详细信息,请参阅调用方法.
PowerBASIC 语法
| METHOD ExecQueryAsync ( _ BYVAL objWbemSink AS IDispatch, _ BYVAL strQuery AS WSTRING, _ OPTIONAL BYVAL strQueryLanguage AS WSTRING, _ OPTIONAL BYVAL iFlags AS LONG, _ OPTIONAL BYVAL objWbemNamedValueSet AS IDispatch, _ BYVAL objWbemAsyncContext AS IDispatch _ ) | 
参数
objWbemSink
以异步方式执行查询的对象接收器。创建一个SWbemSink对象来接收对象。
strQuery
需要。包含查询文本的字符串。此参数不能为空。
strQueryLanguage
包含要使用的查询语言的字符串。如果指定,此值必须为“WQL”。
iFlags
确定查询行为的整数。此参数可以接受以下值。
| 值 | 含义 | 
| wbemFlagSendStatus 128 &H80 | 导致异步调用将状态更新发送到对象接收器的OnProgress事件处理程序。 | 
| wbemFlagDontSendStatus 0 &H0 | 防止异步调用向对象接收器的OnProgress事件处理程序发送状态更新。 | 
| wbemQueryFlagPrototype 2 &H2 | 用于原型。它阻止查询发生,而是返回一个看起来像一个典型结果对象的对象。 | 
| wbemFlagUseAmendedQualifiers 131072 &H20000 | 导致WMI使用基类定义返回类修改数据。有关详细信息,请参阅本地化WMI类信息. | 
objWbemNamedValueSet
通常,这是未定义的。否则,这是一个SWbemNamedValueSet对象,其元素表示正在为请求提供服务的提供者可以使用的上下文信息。支持或要求此类信息的提供者必须记录识别的值名称,值的数据类型,允许的值和语义。
objWbemAsyncContext
一个SWbemNamedValueSet对象返回到对象接收器,以识别原始异步调用的源。使用此参数可以使用相同的对象接收器进行多个异步调用。要使用此参数,请创建一个SWbemNamedValueSet对象,并使用SWbemNamedValueSet.Add方法添加一个标识您正在进行的异步调用的值。该SWbemNamedValueSet对象返回到对象接收器,并且可以使用SWbemNamedValueSet.Item方法提取调用的源。有关详细信息,请参阅调用方法.
返回值
此方法没有返回值。如果成功,则接收器每个实例收到OnObjectReady事件。在最后一个实例之后,对象接收器接收OnCompleted事件。
OBJRESULT
| 错误(名称/十进制/十六进制) | 含义 | 
| wbemErrAccessDenied -2147217405 &H80041003 | 当前用户没有查看结果集的权限。 | 
| wbemErrFailed -2147217407 &H80041001 | 未指定错误 | 
| wbemErrInvalidParameter -2147217400 &H80041008 | 指定了无效参数。 | 
| wbemErrInvalidQuery -2147217385 &H80041017 | 查询语法无效。 | 
| wbemErrInvalidQueryType -2147217384 &H80041018 | 不支持请求的查询语言。 | 
| wbemErrOutOfMemory -2147217402 &H80041006 | 没有足够的内存来完成操作。 | 
备注
此通话立即返回。所请求的对象和状态通过发送到objWbemSink中指定的接收器的回调返回给呼叫者。要处理每个对象返回时,创建一个OnObjectReady事件子例程。返回所有对象后,执行objWbemSink.OnCompleted事件的最终处理。
异步回调允许非验证用户向sink提供数据。这对您的脚本和应用程序造成安全隐患。要消除风险,请参阅设置异步调用的安全性.
当没有对象与查询中的条件匹配时,ExecQueryAsync方法返回一个空结果集。无论strQuery参数中是否请求键属性,此方法都会返回键属性。
对于可在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 OSR2及更高版本。 | 
| 服务器 | 需要Windows Server 2008,Windows Server 2003,Windows 2000 Server或Windows NT Server 4.0 SP4及更高版本。 | 
| 类型库 | 使用Wbemdisp.tlb。 | 
| 头 | Wbemdisp.inc。 | 
| DLL | 需要Wbemdisp.dll。 | 


