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 |
|
Biblioteca de tipos |
|
DLL |
|
CLSID |
CLSID_ISWbemServicesEx |
IID |
IID_ISWbemServicesEx |