Partilhar via


Função ExecNotificationQueryWmi

Executa uma consulta para receber eventos. A chamada é devolvida imediatamente e o autor da chamada pode consultar o enumerador devolvido para ver os eventos à medida que chegam. A libertação do enumerador devolvido cancela a consulta.

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 ExecNotificationQueryWmi (
   [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 dos dois sinalizadores seguintes que afetam o comportamento desta função. Estes 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_RETURN_IMMEDIATELY 0x10 O sinalizador causa uma chamada semissíncrona. Se este sinalizador não estiver definido, a chamada falhará. Isto acontece porque os eventos são recebidos continuamente, o que significa que o utilizador tem de consultar o enumerador devolvido. Bloquear esta chamada indefinidamente torna isso impossível.
WBEM_FLAG_FORWARD_ONLY 0x20 A função devolve um enumerador só de reencaminhamento. Normalmente, os enumeradores só de reencaminhamento são mais rápidos e utilizam menos memória do que os enumeradores convencionais, mas não permitem chamadas para Clonar.

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 os eventos pedidos.

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. 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_CLASS 0x80041010 A consulta especifica uma classe que não existe.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 Foi pedida demasiada precisão na entrega de eventos. Tem de especificar uma tolerância de consulta maior.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 A consulta pede mais informações do que a Gestão do Windows pode fornecer. Isto HRESULT é devolvido quando uma consulta de evento resulta num pedido para consultar todos os objetos num espaço de nomes.
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 A WMI foi provavelmente parada e reiniciada. 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_UNPARSABLE_QUERY 0x80041058 Não é possível analisar a consulta.
WBEM_S_NO_ERROR 0 A chamada de função foi efetuada com êxito.

Observações

Esta função encapsula uma chamada para o método IWbemServices::ExecNotificationQuery .

Após a função regressar, o autor da chamada transmite periodicamente o objeto devolvido ppEnum para a função Seguinte para ver se existem eventos disponíveis.

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 do quão complexa é a 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 do Sistema.

Cabeçalho: WMINet_Utils.idl

.NET Framework Versões: Disponível desde 4.7.2

Ver também