Compartilhar via


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

O método IWbemObjectSink::SetStatus é chamado por fontes para indicar o fim de uma sequência de notificação ou para enviar outros códigos status para o coletor. O método IWbemObjectSink::Indicate pode ou não ter sido chamado antes da chamada para SetStatus.

Normalmente, um cliente implementa a interface IWbemObjectSink e executa métodos IWbemServices que retornam seus resultados usando a interface IWbemObjectSink . Durante essa operação, as chamadas WMI indicam quantas vezes forem necessárias, seguidas por uma chamada final para SetStatus e, em muitos casos, Release.

Sintaxe

HRESULT SetStatus(
  [in] long             lFlags,
  [in] HRESULT          hResult,
  [in] BSTR             strParam,
  [in] IWbemClassObject *pObjParam
);

Parâmetros

[in] lFlags

Máscara de bits de informações de status. O status da operação pode ser obtido examinando o parâmetro hResult.

WBEM_STATUS_COMPLETE

A operação foi concluída.

WBEM_STATUS_PROGRESS

A operação ainda está em andamento.

WBEM_STATUS_REQUIREMENTS

Usado na ativação da pós-filtragem.

[in] hResult

Esse parâmetro é definido como HRESULT da operação ou notificação assíncrona. Esse é um código de erro, se ocorreu um erro, ou a quantidade de progresso que foi feita em uma chamada assíncrona.

[in] strParam

Recebe um ponteiro para um BSTR somente leitura, se a operação assíncrona original retornar uma cadeia de caracteres. Por exemplo, ao usar PutInstanceAsync, SetStatus é chamado com esse parâmetro definido como o caminho do objeto da instância recém-criada.

[in] pObjParam

Nos casos em que um erro complexo ou status objeto é retornado, isso contém um ponteiro para o objeto de erro. Se o objeto for necessário após o retorno de SetStatus , o objeto chamado deverá usar o método AddRef no ponteiro antes que o objeto chamado retorne.

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 SetStatus no objeto sink. Por exemplo, chamar IWbemServices::CancelAsyncCall de dentro de uma implementação de SetStatus 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. 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.

Para receber atualizações intermediárias status por meio da implementação do SetStatus pelo cliente, você deve especificar WBEM_FLAG_SENT_STATUS em sua chamada para um método de provedor/serviço. A status exata pode ser determinada examinando os valores HIWORD e LOWORD de hResult separadamente. O valor LOWORD (hResult) contém a quantidade de progresso que foi feita até agora e o valor HIWORD (hResult) contém o total.

Se você não especificar WBEM_FLAG_SEND_STATUS ao chamar seu provedor ou método de serviço, você tem a garantia de receber uma e apenas uma chamada para SetStatus.

Requisitos

Requisito Valor
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

Confira também

IWbemObjectSink

IWbemObjectSink::Indicate

IWbemObjectSinkEx

IWbemServices::ExecQueryAsync

WBEM_STATUS_TYPE