Método SWbemServices.ExecQueryAsync

O método ExecQueryAsync do objeto SWbemServices executa uma consulta para recuperar objetos. A chamada para esse método retorna imediatamente, e os resultados e o status são retornados ao chamador por meio de eventos entregues ao coletor especificado em objWbemSink. Para manipular cada objeto retornado, crie um objWbemSink. Sub-rotina de evento OnObjectReady .

O método é chamado no modo assíncrono. Para obter mais informações, consulte Chamar um método.

Para obter uma explicação dessa sintaxe, consulte As Convenções de Documento para a API de Scripts.

Sintaxe

objWbemObjectSet = .ExecQueryAsync( _
  [ ByVal objWbemSink ], _
  ByVal strQuery, _
  [ ByVal strQueryLanguage ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parâmetros

objWbemSink [opcional]

Coletor de objeto que executa a consulta de forma assíncrona. Crie um objeto SWbemSink para receber os objetos.

strQuery

Obrigatórios. Cadeia de caracteres que contém o texto da consulta. Esse parâmetro não pode ficar em branco. Para obter mais informações sobre como criar cadeias de caracteres de consulta WMI, consulte Consulta com WQL e a referência do WQL .

strQueryLanguage [opcional]

Cadeia de caracteres que contém a linguagem de consulta a ser usada. Se especificado, o valor deve ser "WQL".

iFlags [opcional]

Inteiro que determina o comportamento da consulta. Esse parâmetro pode aceitar os valores a seguir.

wbemFlagSendStatus (128 (0x80))

Faz com que chamadas assíncronas enviem atualizações de status para o manipulador de eventos OnProgress para o coletor de objetos.

wbemFlagDontSendStatus (0 (0x0))

Impede que chamadas assíncronas enviem atualizações de status para o manipulador de eventos OnProgress para o coletor de objetos.

wbemQueryFlagPrototype (2 (0x2))

Usado para um protótipo. Ela impede que a consulta aconteça e, em vez disso, retorna um objeto que se parece com um objeto de resultado típico.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Faz com que o WMI retorne dados de alteração de classe com a definição de classe base. Para obter mais informações, consulte Localizando informações de classe WMI.

objwbemNamedValueSet [opcional]

Normalmente, isso é indefinido. Caso contrário, esse é um objeto SWbemNamedValueSet cujos elementos representam as informações de contexto que podem ser usadas pelo provedor que atende à solicitação. Um provedor que dê suporte ou exija informações de contexto deve documentar os nomes de valor reconhecidos, o tipo de dados do valor, os valores permitidos e a semântica.

objWbemAsyncContext [opcional]

Um objeto SWbemNamedValueSet que retorna ao coletor de objeto para identificar a origem da chamada assíncrona original. Use esse parâmetro para fazer várias chamadas assíncronas usando o mesmo coletor de objeto. Para usar esse parâmetro, crie um objeto SWbemNamedValueSet e use o método SWbemNamedValueSet.Add para adicionar um valor que identifica a chamada assíncrona que você está fazendo. Esse objeto SWbemNamedValueSet é retornado ao coletor de objetos e a origem da chamada pode ser extraída usando o método SWbemNamedValueSet.Item . Para obter mais informações, consulte Chamar um método.

Retornar valor

Esse método não tem valores retornados. Se tiver êxito, o coletor receberá um evento OnObjectReady por instância. Após a última instância, o coletor de objetos recebe um evento OnCompleted .

Códigos do Erro

Após a conclusão do método ExecQueryAsync , o objeto Err pode conter um dos códigos de erro na lista a seguir.

wbemErrAccessDenied - 2147749891 (0x80041003)

O usuário atual não tem permissão para exibir o conjunto de resultados.

wbemErrFailed - 2147749889 (0x80041001)

Erro não especificado.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Parâmetro inválido foi especificado.

wbemErrInvalidQuery - 2147749911 (0x80041017)

A sintaxe de consulta não é válida.

wbemErrInvalidQueryType - 2147749912 (0x80041018)

Não há suporte para a linguagem de consulta solicitada.

wbemErrOutOfMemory - 2147749894 (0x80041006)

Memória insuficiente para concluir a operação.

Comentários

Essa chamada retorna imediatamente. Os objetos e o status solicitados são retornados ao chamador por meio de retornos de chamada entregues ao coletor especificado em objWbemSink. Para processar cada objeto quando ele retornar, crie um objWbemSink. Sub-rotina de evento OnObjectReady . Depois que todos os objetos forem retornados, execute o processamento final na implementação do objWbemSink. Evento OnCompleted .

Um retorno de chamada assíncrono permite que um usuário não autenticado forneça dados ao coletor. Isso representa riscos de segurança para seus scripts e aplicativos. Para eliminar os riscos, consulte Configurando Segurança em uma Chamada Assíncrona

O método ExecQueryAsync retorna um conjunto de resultados vazio quando não há objetos que correspondam aos critérios na consulta. Esse método retorna as propriedades de chave se a propriedade Key é solicitada ou não no parâmetro strQuery .

Há limites para o número de palavras-chave AND e OR que podem ser usadas em consultas WQL. Um grande número de palavras-chave 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

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

Confira também

SWbemServices

Chamando um método

SWbemServices.Get