Método SWbemServicesEx.PutAsync

O método PutAsync do objeto SWbemServicesEx salva um objeto de maneira assíncrona em um namespace. Quando bem-sucedido, esse método envia um evento OnCompleted para o objeto SWbemSink especificado como um parâmetro de entrada.

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

Para conferir uma explicação dessa sintaxe, confira Convenções de documentação para API de script.

Sintaxe

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parâmetros

objWbemSink

Obrigatórios. Coletor de objetos que recebe os objetos de maneira assíncrona. Crie um objeto SWbemSink para receber os objetos.

ojbWbemObject

Obrigatórios. O novo objeto a ser colocado no namespace. Pode ser um objeto recém-criado ou um objeto modificado.

iFlags [opcional]

Esse parâmetro determina se a chamada cria ou atualiza o objeto e se a chamada retorna imediatamente. Esse parâmetro pode aceitar os valores a seguir.

wbemChangeFlagUpdateCompatible (0 (0x0))

Permite que uma classe seja atualizada quando não há classes derivadas e nenhuma instância da classe. Também permite atualizações em todos os casos em que a alteração é apenas em qualificadores sem importância, por exemplo, o qualificador Description. Esse é o comportamento padrão para essa chamada e ele é usado para compatibilidade com versões anteriores do WMI. Se a classe tiver instâncias, a atualização falhará.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Permite atualizações de classes mesmo que haja classes filho e que a alteração não cause conflitos com as classes filho. Use esse sinalizador ao adicionar uma nova propriedade a uma classe base que não tenha sido mencionada anteriormente em nenhuma das classes filho. Se a classe tiver instâncias, a atualização falhará.

wbemChangeFlagUpdateForceMode (64 (0x40))

Esse sinalizador força as atualizações de classes quando há classes filho conflitantes. Por exemplo, esse sinalizador força uma atualização quando um qualificador de classe é definido em uma classe filho e a classe base tenta adicionar o mesmo qualificador em conflito com o existente. No modo de força, esse conflito é resolvido com a exclusão do qualificador conflitante na classe filho. Se a classe tiver instâncias, a atualização falhará.

O uso do modo de força para atualizar uma classe estática causa a exclusão de todas as instâncias dessa classe. Uma atualização forçada em uma classe de provedor não exclui instâncias da classe.

wbemChangeFlagCreateOrUpdate (0 (0x0))

Faz com que a classe ou a instância seja criada se ela não existir ou seja substituída se ela já existir.

wbemChangeFlagCreateOnly (2 (0x2))

Usado somente para criação. A chamada falhará se a classe ou a instância já existir.

wbemChangeFlagUpdateOnly (1 (0x1))

Faz com que essa chamada seja atualizada. A classe ou a instância precisa existir para que a chamada seja bem-sucedida.

wbemFlagReturnImmediately (16 (0x10))

Faz com que a chamada retorne imediatamente.

wbemFlagReturnWhenComplete (0 (0x0))

Faz com que essa chamada seja bloqueada até a conclusão da consulta. Esse sinalizador chama o método no modo síncrono.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Faz com que o WMI grave dados de aditamento da classe e a definição da classe base. Para obter mais informações, consulte Localizar informações de classe WMI.

objWbemNamedValueSet [opcional]

Normalmente, isso é indefinido. Caso contrário, esse será 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 essas informações 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 é retornado ao coletor de objetos para identificar a origem da chamada assíncrona original. Utilize esse parâmetro para fazer várias chamadas assíncronas usando o mesmo coletor de objetos. Para usar esse parâmetro, crie um objeto SWbemNamedValueSet e use o método SWbemNamedValueSet.Add para adicionar um valor que identifique a chamada assíncrona que você está fazendo. Esse objeto SWbemNamedValueSet é retornado ao coletor de objeto, e a origem da chamada pode ser extraída usando o método SWbemNamedValueSet.Item. Para obter mais informações, confira Como chamar um método.

Retornar valor

Esse método não retorna um valor. Se a chamada for bem-sucedida, o evento OnObjectPut do coletor de objetos fornecido receberá um objeto SWbemObjectPath que contém o caminho do objeto da instância ou da classe confirmada com êxito no WMI.

Códigos do Erro

Após a conclusão do método PutAsync_, o objeto Err poderá conter um dos códigos de erro da lista a seguir.

wbemErrAccessDenied – 2147749891 (0x80041003)

O usuário atual não tem a permissão para atualizar uma instância da classe especificada.

wbemErrAlreadyExists – 2147749913 (0x80041019)

O sinalizador wbemChangeFlagCreateOnly foi especificado, mas a instância já existe.

wbemErrFailed – 2147749889 (0x80041001)

Erro não especificado.

wbemErrIllegalNull – 2147749898 (0x8004100A)

Um valor Null foi especificado para uma propriedade que não pode ser Null. Um exemplo dessa propriedade é aquele marcado por um qualificador Key, Indexed ou Not_Null.

wbemErrInvalidObject – 2147749908 (0x80041014)

A instância especificada é inválida.

wbemErrInvalidParameter – 2147749896 (0x80041008)

Um parâmetro especificado não é válido.

wbemErrNotFound – 2147749890 (0x80041002)

O sinalizador wbemChangeFlagUpdateOnly foi especificado, mas a instância ou a classe não existe.

wbemErrIncompleteClass - 2147749920 (0x80041020)

As propriedades necessárias para as classes não foram todas definidas.

wbemErrOutOfMemory – 2147749894 (0x80041006)

Não há memória suficiente para concluir a operação.

Comentários

Essa chamada retorna imediatamente e os resultados e o status são retornados ao chamador por meio de eventos entregues ao coletor especificado no objWbemSink. Para manipular cada objeto quando ele chegar, crie uma sub-rotina do evento objWbemSink.OnObjectReady. Qualquer processamento feito após a chegada de todos os objetos é feito em uma sub-rotina para o evento objWbemSink.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 Configurar a segurança em uma chamada assíncrona.

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_ISWbemServicesEx
IID
IID_ISWbemServicesEx