Compartilhar via


Método IWbemObjectSink::Indicate (wbemcli.h)

O método Indicate é chamado por uma fonte para fornecer uma notificação. Normalmente, o WMI chama a implementação do cliente dessa interface depois que o cliente executa um dos métodos assíncronos de IWbemServices. Em outros casos, vários tipos de provedores chamam uma implementação exportada pelo WMI para fornecer eventos. Portanto, o código do cliente pode ter que implementar essa interface em alguns casos e usar a implementação de um componente diferente em outros casos.

Use essa interface e o método em conjunto com os métodos assíncronos da interface IWbemServices .

Clientes e provedores devem implementar essa interface para receber notificações ou executar os métodos assíncronos de IWbemServices. Para obter mais informações, confira Como chamar um método.

Sintaxe

HRESULT Indicate(
  [in] long             lObjectCount,
  [in] IWbemClassObject **apObjArray
);

Parâmetros

[in] lObjectCount

Número de objetos na matriz de ponteiros a seguir.

[in] apObjArray

Matriz de ponteiros para interfaces IWbemClassObject . A memória da matriz em si é somente leitura e pertence ao chamador do método . Como esse é um parâmetro in, a implementação tem a opção de chamar IWbemClassObject::AddRef em qualquer ponteiro de objeto na matriz e mantê-lo antes de retornar se os objetos serão usados depois que o método tiver retornado, de acordo com as regras COM. Se os objetos forem usados apenas durante a chamada Indicate , você não precisará chamar AddRef em cada ponteiro de objeto.

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.

Comentários

Ao implementar um coletor de assinatura de evento (IWbemObjectSink ou IWbemEventSink), não chame o WMI de dentro do método Indicate no objeto sink. Por exemplo, chamar IWbemServices::CancelAsyncCall de dentro de uma implementação de Indicate pode interferir no estado WMI. Para cancelar uma assinatura de evento, defina um sinalizador e chame o IWbemServices::CancelAsyncCall de outro thread ou objeto. Para implementações que não estejam relacionadas a um coletor de eventos, como recuperações de objeto, enumeração e consulta, você pode fazer uma chamada de volta para o WMI.

As implementações do coletor devem processar a notificação de evento dentro de 100 milissegundos, pois o thread do WMI que entrega a notificação de evento não pode executar outras tarefas até que o objeto coletor tenha concluído o processamento. Se a notificação exigir uma grande quantidade de processamento, o coletor poderá usar uma fila interna para outro thread para lidar com o processamento.

Quando um provedor de eventos chama Indicate para fornecer um evento, a chamada pode falhar com WBEM_E_SERVER_TOO_BUSY. O provedor pode optar por responder a essa mensagem disparando novamente o evento.

Nota Como o retorno de chamada para o coletor 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. Para obter mais informações, consulte Chamar um método.
 

Requisitos

   
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho wbemcli.h (include Wbemidl.h)
Biblioteca Wbemuuid.lib
DLL Fastprox.dll

Confira também

IWbemObjectSink

IWbemObjectSink::SetStatus

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync