Método SWbemServicesEx.Put

O método Put do objeto SWbemServicesEx salva o objeto no namespace associado ao objeto e retorna um objeto SWbemObjectPath que contém o caminho do objeto no qual os dados foram gravados.

Esse método é chamado no modo semissí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

objObjectPath = .Put( _
  ByVal objWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ] _
)

Parâmetros

objWbemObject

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

iFlags [opcional]

Este 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 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 Descrição). Esse é o comportamento padrão para essa chamada e ele é usado para compatibilidade com versões anteriores da WMI. Se a classe tiver instâncias, a atualização falhará.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Permite atualizações de classes, mesmo que haja classes filho, quando a alteração não causar nenhum conflito com as classes filho. Use 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))

Esse sinalizador 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 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 faça apenas uma atualização. 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 operação seja concluída. Esse sinalizador chama o método no modo síncrono.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Faz com que a WMI grave dados de aditamento da classe, além da definição de 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.

Retornar valor

Se a chamada for bem-sucedida, um objeto SWbemObjectPath será retornado. Esse objeto contém o caminho do objeto da instância ou classe que foi confirmada com êxito no WMI.

Códigos do Erro

Após a conclusão do método Put, o objeto deErro 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 a operação.

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)

O objeto especificado não é válido.

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.

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