Método IEnumWbemClassObject::NextAsync (wbemcli.h)
Use o método NextAsync quando uma recuperação assíncrona controlada de objetos para um coletor for necessária. A recuperação assíncrona normal, como uma chamada para IWbemServices::ExecQueryAsync, resulta em entrega descontrolada de objetos para a implementação do chamador de IWbemObjectSink. Esse método é útil para casos em que um componente controla a entrega de objetos.
Sintaxe
HRESULT NextAsync(
[in] ULONG uCount,
[in] IWbemObjectSink *pSink
);
Parâmetros
[in] uCount
Número de objetos que estão sendo solicitados.
[in] pSink
Coletor para receber os objetos. O coletor deve ser implementado pelo chamador. Conforme cada lote de objetos é solicitado, eles são entregues ao parâmetro pSink do método Indicate seguido por uma chamada final para o parâmetro pSink do método SetStatus . Se o coletor for usado para entregar objetos, esse método retornará WBEM_S_NO_ERROR, mesmo que o número de objetos a serem entregues seja menor do que o solicitado. No entanto, se não houver mais objetos restantes, o parâmetro pSink será ignorado (nenhuma chamada para o parâmetro pSink de SetStatus será feita). Em vez disso, esse método retorna WBEM_S_FALSE.
Valor retornado
O método NextAsync 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
Uma chamada para a função COM GetErrorInfo fornece mais informações sobre o erro. Códigos de erro específicos do COM também poderão ser retornados se problemas de rede fizerem com que você perca a conexão remota com o Gerenciamento do Windows.
Essa chamada retorna imediatamente e a entrega para o coletor ocorre em segundo plano. Se várias chamadas forem feitas a esse método de um ou mais threads, elas serão logicamente enfileiradas e a ordem das chamadas e da entrega de objetos será preservada. Várias chamadas feitas a esse método de um ou mais blocos de threads não retornam até que todos os objetos de coletor relacionados a chamadas anteriores a esse método tenham sido atendidos. Uma chamada para Redefinir não afeta a entrega de objetos atualmente em andamento como resultado de chamadas anteriores. O método Reset faz com que novas chamadas sejam iniciadas apenas no início da sequência de objetos.
Se o número de objetos solicitados estiver disponível imediatamente, a função retornará WBEM_S_NO_ERROR. Se houver menos do que o número de objetos solicitados disponíveis, os objetos disponíveis serão retornados e WBEM_S_NO_ERROR serão retornados. O restante dos objetos é entregue pelo coletor fornecido pelo usuário.
À medida que os objetos ficam disponíveis, a implementação do chamador de IWbemObjectSink::Indicate é chamada zero ou mais vezes para entregar os objetos. Isso é seguido por uma chamada para IWbemObjectSink::SetStatus com um valor de WBEM_S_NO_ERROR se os itens uCount forem retornados.
Se menos objetos estiverem disponíveis do que o número solicitado, Indicate será chamado para os objetos disponíveis. SetStatus é chamado com um valor de WBEM_S_FALSE ou o código de erro se ocorreu um erro.
Se o número solicitado de objetos for entregue, o objeto final será seguido por uma chamada para SetStatus com um código status de WBEM_S_NO_ERROR. Se a enumeração for concluída antes que o número solicitado de objetos possa ser entregue, o método SetStatus terá um código status de WBEM_S_FALSE.
Se não houver objetos disponíveis, Indicate não será chamado. No entanto, uma chamada final para SetStatus sempre ocorre para indicar o status de toda a operação.
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 IEnumWbemClassObject::Next e Chamando 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 |