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 |