Método SWbemServices.ExecQueryAsync
El método ExecQueryAsync del objeto SWbemServices ejecuta una consulta para recuperar objetos. La llamada a este método se devuelve inmediatamente y los resultados y el estado se devuelven al autor de la llamada a través de eventos entregados al receptor especificado en objWbemSink. Para controlar cada objeto devuelto, cree una subrutina de eventos objWbemSink.OnObjectReady.
Se llama al método en el modo asincrónico. Para más información, vea Llamada a un método.
Para obtener una explicación de esta sintaxis, vea Convenciones de documentación para la API de scripting.
Sintaxis
objWbemObjectSet = .ExecQueryAsync( _
[ ByVal objWbemSink ], _
ByVal strQuery, _
[ ByVal strQueryLanguage ], _
[ ByVal iFlags ], _
[ ByVal objwbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
Parámetros
-
objWbemSink [opcional]
-
Receptor de objetos que ejecuta la consulta de forma asincrónica. Cree un objeto SWbemSink para recibir los objetos.
-
strQuery
-
Necesario. Cadena que contiene el texto de la consulta. Este parámetro no puede estar en blanco. Para más información sobre la creación de cadenas de consulta WMI, vea Consulta con WQL y la referencia WQL.
-
strQueryLanguage [opcional]
-
Cadena que contiene el lenguaje de consulta que se va a usar. Si se especifica, el valor debe ser "WQL".
-
iFlags [opcional]
-
Entero que determina el comportamiento de la consulta. Este parámetro puede aceptar los valores siguientes.
-
wbemFlagSendStatus (128 (0x80))
-
Hace que las llamadas asincrónicas envíen actualizaciones de estado al controlador de eventos OnProgress para el receptor de objetos.
-
wbemFlagDontSendStatus (0 (0x0))
-
Impide que las llamadas asincrónicas envíen actualizaciones de estado al controlador de eventos OnProgress para el receptor de objetos.
-
wbemQueryFlagPrototype (2 (0x2))
-
Se usa para un prototipo. Detiene la consulta y, en su lugar, devuelve un objeto que se parece a un objeto de resultado típico.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
Hace que WMI devuelva datos de modificación de clase con la definición de clase base. Para más información, vea Localización de información de clases WMI.
objwbemNamedValueSet [opcional]
Normalmente, esto no está definido. De lo contrario, se trata de un objeto SWbemNamedValueSet cuyos elementos representan la información de contexto que puede usar el proveedor que atiende la solicitud. Un proveedor que admita o requiera información de contexto debe documentar los nombres de valor reconocidos, el tipo de datos del valor, los valores permitidos y la semántica.
objWbemAsyncContext [opcional]
Objeto SWbemNamedValueSet que se devuelve al receptor del objeto para identificar el origen de la llamada asincrónica original. Use este parámetro para realizar varias llamadas asincrónicas con el mismo receptor de objetos. Para usar este parámetro, cree un objeto SWbemNamedValueSet y use el método SWbemNamedValueSet.Add para agregar un valor que identifique la llamada asincrónica que realiza. Este objeto SWbemNamedValueSet se devuelve al receptor del objeto y el origen de la llamada se puede extraer mediante el método SWbemNamedValueSet.Item. Para más información, vea Llamada a un método.
Valor devuelto
Este método no tiene valores devueltos. Si se ejecuta correctamente, el receptor recibe un evento OnObjectReady por instancia. Después de la última instancia, el receptor del objeto recibe un evento OnCompleted.
Códigos de error
Después de completar el método ExecQueryAsync, el objeto Err puede contener uno de los códigos de error de la lista siguiente.
-
wbemErrAccessDenied - 2147749891 (0x80041003)
-
El usuario actual no tiene el permiso para ver el conjunto de resultados.
-
wbemErrFailed: 2147749889 (0x80041001)
-
Error no especificado.
-
wbemErrInvalidParameter: 2147749896 (0x80041008)
-
Se ha especificado un parámetro no válido.
-
wbemErrInvalidQuery: 2147749911 (0x80041017)
-
La sintaxis de la consulta no es válida.
-
wbemErrInvalidQueryType: 2147749912 (0x80041018)
-
El lenguaje de la consulta solicitada no se admite.
-
wbemErrOutOfMemory: 2147749894 (0x80041006)
-
No hay suficiente memoria para completar la operación.
Comentarios
Esta llamada devuelve inmediatamente. Los objetos y el estado solicitados se devuelven al autor de la llamada mediante devoluciones de llamada entregadas al receptor especificado en objWbemSink. Para procesar cada objeto cuando se devuelva, cree una subrutina de eventos objWbemSink.OnObjectReady. Una vez que se devuelven todos los objetos, realice el procesamiento final en la implementación del evento objWbemSink.OnCompleted.
Una devolución de llamada asincrónica permite a un usuario no autenticado proporcionar datos al receptor. Esto supone riesgos de seguridad para los scripts y las aplicaciones. Para eliminar los riesgos, consulte Establecimiento de la seguridad en una llamada asincrónica.
El método ExecQueryAsync devuelve un conjunto de resultados vacío cuando no hay objetos que coincidan con los criterios de la consulta. Este método devuelve propiedades de clave tanto si se solicita la propiedad Key en el parámetro strQuery como si no.
Existe un límite en el número de palabras clave AND y OR que pueden utilizarse en las consultas WQL. Un gran número de palabras clave WQL utilizadas en una consulta compleja puede hacer que WMI devuelva el código de error WBEM_E_QUOTA_VIOLATION como valor HRESULT. El límite de palabras clave WQL que pueda usarse dependerá de la complejidad de la consulta.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows Vista |
Servidor mínimo compatible |
Windows Server 2008 |
Encabezado |
|
Biblioteca de tipos |
|
Archivo DLL |
|
CLSID |
CLSID_SWbemServices |
IID |
IID_ISWbemServices |