Método SWbemObject.PutAsync_

O método PutAsync_ de SWbemObject cria ou atualiza de maneira assíncrona uma instância ou um objeto de classe para a WMI (Instrumentação de Gerenciamento do Windows). Você pode usar esse método depois de modificar propriedades ou métodos no SWbemObject e suas alterações serão gravadas no WMI.

Para ver uma explicação dessa sintaxe, confira Convenções de documento para a API de script.

Sintaxe

SWbemObject.PutAsync_( _
  ByVal objWbemSink, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Parâmetros

objWbemSink [entrada]

Obrigatórios. Coletor de objeto que recebe de maneira assíncrona o resultado da operação put.

iFlags [entrada, opcional]

Determina se a chamada cria ou atualiza a classe ou instância e se a chamada retorna imediatamente. Esse parâmetro pode aceitar os valores a seguir.

wbemChangeFlagUpdateCompatible (0 (0x0))

Permite que uma classe seja atualizada se não houver classes derivadas e se não houver instâncias dessa classe. Também permite atualizações em todos os casos se a alteração for apenas para 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, se a alteração não causar conflitos com classes filho. Você pode usar esse sinalizador ao adicionar uma nova propriedade à 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))

Força as atualizações de classes quando há classes filho conflitantes. Por exemplo, esse sinalizador força uma atualização se um qualificador de classe tiver sido definido em uma classe filho e a classe base tentar adicionar o mesmo qualificador em conflito com o existente. No modo de força, esse conflito é resolvido excluindo o 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 resulta na 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 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é que a consulta seja concluída.

wbemFlagSendStatus (128 (0x80))

Faz com que chamadas assíncronas enviem atualizações de status ao manipulador de eventos SWbemSink.OnProgress do coletor de objetos.

wbemFlagDontSendStatus (0 (0x0))

Evita que chamadas assíncronas enviem atualizações de status ao manipulador de eventos OnProgress do coletor de objetos.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Faz com que o WMI grave dados de aditamento da classe junto com a definição da classe base. Para obter mais informações sobre qualificadores alterados, confira Localizar informações de classe do WMI.

objWbemNamedValueSet [entrada, 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 está atendendo à 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 [entrada, optional]

Este é um objeto SWbemNamedValueSet que é retornado ao coletor de objetos para identificar a origem da chamada assíncrona original. Use esse parâmetro se estiver fazendo 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 contendo 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 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 Nothing foi especificado para uma propriedade que pode não ser Nothing. 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 o resultado da operação put é retornado ao chamador por meio de retornos de chamada entregues ao coletor especificado em objWbemSink. Implemente o objWbemSink. Método OnObjectPut para obter o caminho do objeto da instância ou da classe que é gravada no repositório do WMI. Para obter mais informações sobre métodos de coletor, consulte Chamar um método.

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, use a comunicação semissíncrona ou síncrona. Para obter mais informações, consulte Chamar um método.

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_SWbemObject
IID
IID_ISWbemObject

Confira também

SWbemObject

SWbemObjectPath.Class

SWbemProperty

SWbemQualifier