Compartir a través de


Función ExecQueryWmi

Ejecuta una consulta para recuperar objetos.

Nota

Esta API es solo para uso interno. No está pensada para usarla desde código del desarrollador.

Sintaxis

HRESULT ExecQueryWmi (
   [in] BSTR                    strQueryLanguage,
   [in] BSTR                    strQuery,
   [in] long                    lFlags,
   [in] IWbemContext*           pCtx,
   [out] IEnumWbemClassObject** ppEnum,
   [in] DWORD                   authLevel,
   [in] DWORD                   impLevel,
   [in] IWbemServices*          pCurrentNamespace,
   [in] BSTR                    strUser,
   [in] BSTR                    strPassword,
   [in] BSTR                    strAuthority
);

Parámetros

strQueryLanguage
[in] El valor de este parámetro se corresponde con una cadena con el lenguaje de consulta válido que se admite en la administración de Windows. Este deberá ser "WQL", que es el acrónimo del lenguaje de consulta de WMI.

strQuery
[in] El valor de este parámetro se corresponde con el texto de la consulta. Este parámetro no puede ser null.

lFlags
[in] El valor de este parámetro se corresponde con una combinación de marcas que afectan al comportamiento de esta función. Los siguientes valores se definen en el archivo de encabezado WbemCli.h, aunque también puede definirlos como constantes en el código. Puede consultarlos a continuación:

Constante Value Descripción
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Si se establece este valor, desde la función se recuperarán los calificadores modificados que se almacenen en el espacio de nombres localizado de la configuración regional de la conexión actual.
Si este no se establece, desde la función solo se recuperarán los calificadores que se almacenen en el espacio de nombres inmediato.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 Si se establece esta marca, se producirá una llamada semisincrónica.
WBEM_FLAG_FORWARD_ONLY 0x20 Si se establece esta marca, se devolverá un enumerador que solo se lee hacia adelante de la función. Normalmente, el uso de enumeradores que solo se leen hacia adelante es más rápido y requiere un menor uso de memoria que cuando se usan enumeradores convencionales. Sin embargo, al usarlos no se permite que se realicen llamadas a la función Clone.
WBEM_FLAG_BIDIRECTIONAL 0 Si se establece este valor, la extensión WMI conservará los punteros que apunten a objetos de la enumeración hasta que estos se liberen.
WBEM_FLAG_ENSURE_LOCATABLE 0x100 Garantiza que los objetos devueltos tengan suficiente información en ellos para que las propiedades del sistema, como __PATH, __RELPATH y __SERVER, no sean null.
WBEM_FLAG_PROTOTYPE 2 Este marcador se utiliza para los prototipos. No ejecuta la consulta y, en su lugar, devuelve un objeto similar a un objeto de resultado típico.
WBEM_FLAG_DIRECT_READ 0x200 Provoca el acceso directo al proveedor de la clase especificada sin tener en cuenta su clase primaria ni sus subclases.

Las marcas cuyo uso se recomienda para obtener un mejor rendimiento son WBEM_FLAG_RETURN_IMMEDIATELY y WBEM_FLAG_FORWARD_ONLY.

pCtx
[in] Normalmente, este valor es null. De lo contrario, es un puntero que apunta a una instancia de la interfaz IWbemContext que puede usarse en el proveedor que proporciona las clases que se solicitan.

ppEnum
[out] Si no se produce ningún error, el valor de este parámetro se corresponderá con el puntero que apunta al enumerador que, a su vez, puede usarse para permitir que se recuperen las instancias del conjunto de resultados de consulta desde el llamador. La consulta puede tener un conjunto de resultados con cero instancias. Para obtener más información, consulte la sección Comentarios.

authLevel
[in] El valor de este parámetro se corresponde con el nivel de autorización.

impLevel
[in] El valor de este parámetro se corresponde con el nivel de suplantación.

pCurrentNamespace
[in] El valor de este parámetro se corresponde con un puntero que apunta a un objeto IWbemServices que, a su vez, se usa para representar el espacio de nombres actual.

strUser
[in] El valor de este parámetro se corresponde con el nombre de usuario. Consulte la función ConnectServerWmi para obtener más información.

strPassword
[in] El valor de este parámetro se corresponde con la contraseña. Consulte la función ConnectServerWmi para obtener más información.

strAuthority
[in] El valor de este parámetro se corresponde con el nombre de dominio del usuario. Consulte la función ConnectServerWmi para obtener más información.

Valor devuelto

Los siguientes valores que devuelve esta función se definen en el archivo de encabezado WbemCli.h, aunque también puede definirlos como constantes en el código. Puede consultarlos a continuación:

Constante Value Descripción
WBEM_E_ACCESS_DENIED 0x80041003 Si se devuelve este valor, significa que el usuario no tiene permiso para visualizar una o varias de las clases que se pueden devolver desde función.
WBEM_E_FAILED 0x80041001 Error no especificado.
WBEM_E_INVALID_PARAMETER 0x80041008 Un parámetro no es válido.
WBEM_E_INVALID_QUERY 0x80041017 Si se devuelve este valor, significa que hubo un error de sintaxis en la consulta.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 No se admite el lenguaje de consulta solicitado.
WBEM_E_QUOTA_VIOLATION 0x8004106c Si se devuelve este valor, significa que la consulta fue demasiado compleja.
WBEM_E_OUT_OF_MEMORY 0x80041006 Memoria insuficiente para completar la operación.
WBEM_E_SHUTTING_DOWN 0x80041033 Si se devuelve este valor, significa que es probable que WMI se encontrara en un proceso de detención y reinicio. En este caso, vuelva a llamar a la función ConnectServerWmi.
WBEM_E_TRANSPORT_FAILURE 0x80041015 Si se devuelve este valor, significará que ha ocurrido un error en el vínculo de llamada a procedimiento remoto (RPC) entre el proceso actual y WMI.
WBEM_E_NOT_FOUND 0x80041002 Si se devuelve este valor, significa que se especificó una clase que no existe en la consulta.
WBEM_S_NO_ERROR 0 Si se devuelve este valor, significará que la llamada a la función se realizó correctamente.

Comentarios

Esta función encapsula una llamada al método IWbemServices::ExecQuery.

Esta función procesa la consulta especificada en el parámetro strQuery y crea un enumerador mediante el cual el autor de la llamada puede acceder a los resultados de la consulta. El enumerador es un puntero a una interfaz IEnumWbemClassObject; los resultados de la consulta son instancias de objetos de clase disponibles mediante la interfaz IWbemClassObject.

Hay límites en el número de palabras clave AND y OR que se pueden usar en las consultas WQL. Si se usa un gran número de palabras clave WQL en una consulta compleja puede causar que, desde WMI, se devuelva el código de error WBEM_E_QUOTA_VIOLATION (o 0x8004106c) como valor HRESULT. El límite de palabras clave WQL que pueda usarse dependerá de la complejidad de la consulta.

Si se produce un error en la llamada a la función, podrá obtener información adicional sobre este mediante una llamada a la función GetErrorInfo.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: WMINet_Utils.idl

Versiones de .NET Framework: está disponible desde la versión 4.7.2

Consulte también