Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Executa uma consulta para obter objetos.
Nota
Esta API destina-se apenas a utilização interna. Não se destina a ser utilizado a partir do código do programador.
Sintaxe
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] Uma cadeia com a linguagem de consulta válida suportada pela Gestão do Windows. Tem de ser "WQL", o acrónimo da Linguagem de Consulta WMI.
strQuery
[in] O texto da consulta. Este parâmetro não pode ser null.
lFlags
[in] Uma combinação de sinalizadores que afetam o comportamento desta função. Os seguintes valores são definidos no ficheiro de cabeçalho WbemCli.h ou pode defini-los como constantes no seu código:
| Constante | Valor | Descrição |
|---|---|---|
WBEM_FLAG_USE_AMENDED_QUALIFIERS |
0x20000 | Se estiver definida, a função obtém os qualificadores alterados armazenados no espaço de nomes localizado da região da ligação atual. Se não estiver definida, a função obtém apenas os qualificadores armazenados no espaço de nomes imediato. |
WBEM_FLAG_RETURN_IMMEDIATELY |
0x10 | O sinalizador causa uma chamada semissíncrona. |
WBEM_FLAG_FORWARD_ONLY |
0x20 | A função devolve um enumerador só de reencaminhamento. Normalmente, os enumeradores apenas de reencaminhamento são mais rápidos e utilizam menos memória do que os enumeradores convencionais, mas não permitem chamadas para Clonar. |
WBEM_FLAG_BIDIRECTIONAL |
0 | A WMI retém os ponteiros para os objetos na enumeração até serem libertados. |
WBEM_FLAG_ENSURE_LOCATABLE |
0x100 | Garante que os objetos devolvidos têm informações suficientes para que as propriedades do sistema, como __PATH, __RELPATH e __SERVER, não nullsejam . |
WBEM_FLAG_PROTOTYPE |
2 | Este sinalizador é utilizado para prototipagem. Não executa a consulta e, em vez disso, devolve um objeto que se parece com um objeto de resultado típico. |
WBEM_FLAG_DIRECT_READ |
0x200 | Causa acesso direto ao fornecedor para a classe especificada, independentemente da classe principal ou de subclasses. |
Os sinalizadores recomendados são WBEM_FLAG_RETURN_IMMEDIATELY e WBEM_FLAG_FORWARD_ONLY para um melhor desempenho.
pCtx
[in] Normalmente, este valor é null. Caso contrário, é um ponteiro para uma instância IWbemContext que pode ser utilizada pelo fornecedor que está a fornecer as classes pedidas.
ppEnum
[fora] Se não ocorrer nenhum erro, recebe o ponteiro para o enumerador que permite ao autor da chamada obter as instâncias no conjunto de resultados da consulta. A consulta pode ter um conjunto de resultados com zero instâncias. Consulte a secção Observações para obter mais informações.
authLevel
[in] O nível de autorização.
impLevel
[in] O nível de representação.
pCurrentNamespace
[in] Um ponteiro para um objeto IWbemServices que representa o espaço de nomes atual.
strUser
[in] O nome de utilizador. Veja a função ConnectServerWmi para obter mais informações.
strPassword
[in] A palavra-passe. Veja a função ConnectServerWmi para obter mais informações.
strAuthority
[in] O nome de domínio do utilizador. Veja a função ConnectServerWmi para obter mais informações.
Valor devolvido
Os seguintes valores devolvidos por esta função são definidos no ficheiro de cabeçalho WbemCli.h ou pode defini-los como constantes no seu código:
| Constante | Valor | Descrição |
|---|---|---|
WBEM_E_ACCESS_DENIED |
0x80041003 | O utilizador não tem permissão para ver uma ou mais das classes que a função pode devolver. |
WBEM_E_FAILED |
0x80041001 | Ocorreu um erro não especificado. |
WBEM_E_INVALID_PARAMETER |
0x80041008 | Um parâmetro não é válido. |
WBEM_E_INVALID_QUERY |
0x80041017 | A consulta teve um erro de sintaxe. |
WBEM_E_INVALID_QUERY_TYPE |
0x80041018 | A linguagem de consulta pedida não é suportada. |
WBEM_E_QUOTA_VIOLATION |
0x8004106c | A consulta é demasiado complexa. |
WBEM_E_OUT_OF_MEMORY |
0x80041006 | Não existe memória suficiente disponível para concluir a operação. |
WBEM_E_SHUTTING_DOWN |
0x80041033 | O WMI foi provavelmente parado e reiniciado. Ligue novamente para ConnectServerWmi . |
WBEM_E_TRANSPORT_FAILURE |
0x80041015 | A ligação de chamada de procedimento remoto (RPC) entre o processo atual e a WMI falhou. |
WBEM_E_NOT_FOUND |
0x80041002 | A consulta especifica uma classe que não existe. |
WBEM_S_NO_ERROR |
0 | A chamada da função foi efetuada com êxito. |
Observações
Esta função encapsula uma chamada para o método IWbemServices::ExecQuery .
Esta função processa a consulta especificada no strQuery parâmetro e cria um enumerador através do qual o autor da chamada pode aceder aos resultados da consulta. O enumerador é um ponteiro para uma interface IEnumWbemClassObject ; os resultados da consulta são instâncias de objetos de classe disponibilizados através da interface IWbemClassObject .
Existem limites para o número de AND palavras-chave e OR que podem ser utilizadas em consultas WQL. Um grande número de palavras-chave WQL utilizadas numa consulta complexa pode fazer com que a WMI devolva o WBEM_E_QUOTA_VIOLATION código de erro (ou 0x8004106c) como um HRESULT valor. O limite de palavras-chave WQL depende da complexidade da consulta.
Se a chamada da função falhar, pode obter informações de erro adicionais ao chamar a função GetErrorInfo .
Requisitos
Plataformas: Veja Requisitos de Sistema.
Cabeçalho: WMINet_Utils.idl
.NET Framework Versões: Disponível desde a versão 4.7.2