Método IWbemServices::ExecNotificationQueryAsync (wbemcli.h)
O método IWbemServices::ExecNotificationQueryAsync executa a mesma tarefa que IWbemServices::ExecNotificationQuery , exceto que os eventos são fornecidos ao manipulador de resposta especificado até que CancelAsyncCall seja chamado para interromper a notificação de evento.
Sintaxe
HRESULT ExecNotificationQueryAsync(
[in] const BSTR strQueryLanguage,
[in] const BSTR strQuery,
[in] long lFlags,
[in] IWbemContext *pCtx,
[in] IWbemObjectSink *pResponseHandler
);
Parâmetros
[in] strQueryLanguage
BSTR válido que contém uma das linguagens de consulta compatíveis com o Gerenciamento do Windows. Isso deve ser "WQL".
[in] strQuery
BSTR válido que contém o texto da consulta relacionada a eventos. Isso não pode ser NULL. Para obter mais informações sobre como criar cadeias de caracteres de consulta do WMI, veja Como consultar com WQL e a referência da WQL.
[in] lFlags
Esse parâmetro pode ser o valor a seguir.
WBEM_FLAG_SEND_STATUS
Esse sinalizador registra no Gerenciamento do Windows uma solicitação para receber relatórios de status intermediários por meio da implementação do cliente de IWbemObjectSink::SetStatus. A implementação do provedor deve dar suporte a relatórios intermediários de status para que esse sinalizador altere o comportamento.
[in] pCtx
Normalmente NULL. Caso contrário, esse é um ponteiro para um objeto IWbemContext que pode ser usado pelo provedor que está retornando os eventos solicitados. Os valores no objeto de contexto devem ser especificados na documentação do provedor em questão. Para obter mais informações sobre esse parâmetro, consulte Fazendo chamadas para WMI.
[in] pResponseHandler
Ponteiro para a implementação do chamador de IWbemObjectSink. Esse manipulador recebe os objetos no conjunto de resultados da consulta conforme eles ficam disponíveis. Para deixar de receber eventos, o chamador deve chamar IWbemServices::CancelAsyncCall usando o mesmo valor de ponteiro para pResponseHandler. À medida que os eventos se tornam disponíveis, a implementação fornecida de IWbemObjectSink::Indicate é chamada para entregar os objetos de evento. O método IWbemObjectSink::SetStatus não é chamado em nenhum momento, pois não há nenhuma condição final ou de encerramento. A chamada é executada indefinidamente até ser cancelada. Se algum código de erro for retornado, o ponteiro IWbemObjectSink fornecido não será usado. Se WBEM_S_NO_ERROR for retornado, a implementação IWbemObjectSink do usuário será chamada para indicar o resultado da operação. O Gerenciamento do Windows chama apenas AddRef no ponteiro nos casos em que WBEM_S_NO_ERROR retorna. Nos casos em que um código de erro retorna, a contagem de referência é a mesma que na entrada. Para obter uma explicação detalhada desse parâmetro, consulte Chamando um método.
Retornar valor
Esse método retorna um HRESULT que indica o status da chamada de método. A lista a seguir lista o valor contido em um HRESULT.
Em caso de falha, você pode obter todas as informações disponíveis da função COM GetErrorInfo.
Outros códigos de erro são retornados para o coletor de objeto especificado pelo parâmetro pResponseHandler .
Códigos de erro específicos do COM também podem ser retornados se problemas de rede fizerem com que você perca a conexão remota com o Gerenciamento do Windows.
Comentários
O método IWbemObjectSink::SetStatus é chamado para indicar o final do conjunto de resultados. Ele também pode ser chamado sem nenhuma chamada intervindo para IWbemObjectSink::Indique se ocorrem condições de erro.
Como o retorno de chamada pode não ser retornado no mesmo nível de autenticação exigido pelo cliente, é recomendável que você use a comunicação semissíncrona em vez de assíncrona. Se você precisar de comunicação assíncrona, consulte Chamando um método.
Para obter mais informações sobre como usar métodos de forma semissíncrona, consulte IWbemServices::ExecNotificationQuery e Chamando um método.
Existem limites no número de palavras-chave AND e OR que podem ser usadas nas consultas WQL. Um grande número de palavras-chave da WQL usadas em uma consulta complexa pode fazer com que o WMI retorne o código de erro WBEM_E_QUOTA_VIOLATION como um valor HRESULT. O limite de palavras-chave WQL depende da complexidade da consulta.
Requisitos
Cliente mínimo com suporte | Windows Vista |
Servidor mínimo com suporte | Windows Server 2008 |
Plataforma de Destino | Windows |
Cabeçalho | wbemcli.h (inclua Wbemidl.h) |
Biblioteca | Wbemuuid.lib |
DLL | Fastprox.dll; Esscli.dll; FrameDyn.dll; FrameDynOS.dll; Ntevt.dll; Stdprov.dll; Viewprov.dll; Wbemcomn.dll; Wbemcore.dll; Wbemess.dll; Wbemsvc.dll; Wmipicmp.dll; Wmidcprv.dll; Wmipjobj.dll; Wmiprvsd.dll |