Partilhar via


Função PutInstanceWmi

Cria ou atualiza uma instância de uma classe existente. A instância é escrita para o repositório WMI.

Observação

Esta API é apenas para uso interno. Não é destinado a ser usado em código de desenvolvedor.

Sintaxe

HRESULT PutInstanceWmi (
   [in] IWbemClassObject*    pInst,
   [in] long                 lFlags,
   [in] IWbemContext*        pCtx,
   [out] IWbemCallResult**   ppCallResult
);

Parâmetros

pInst
[dentro] Um apontador para a instância a ser escrita.

lFlags
[dentro] Uma combinação de flags que afetam o comportamento desta função. Os seguintes valores estão definidos no ficheiro de cabeçalho WbemCli.h , ou pode defini-los como constantes no seu código:

Constante Valor Description
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Se for definido, o WMI não guarda quaisquer qualificadores com o Amended flavor.
Se não for definido, assume-se que este objeto não está localizado, e todos os qualificadores são armazenados com esta instância.
WBEM_FLAG_CREATE_OR_UPDATE 0 Cria a instância se ela não existir, ou sobrescreve-a se já existir.
WBEM_FLAG_UPDATE_ONLY 1 Atualize a instância. A instância deve existir para que a chamada seja bem-sucedida.
WBEM_FLAG_CREATE_ONLY 2 Cria a instância. A chamada falha se a instância já existir.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 A bandeira provoca uma chamada semi-síncrona.

pCtx
[dentro] Normalmente, este valor é null. Caso contrário, é um ponteiro para uma instância IWbemContext que pode ser usada pelo fornecedor que fornece as classes solicitadas.

ppCallResult
[fora] Se null, este parâmetro não é utilizado. Se lFlags contém WBEM_FLAG_RETURN_IMMEDIATELY, a função retorna imediatamente com WBEM_S_NO_ERROR. O ppCallResult parâmetro recebe um ponteiro para um novo objeto IWbemCallResult .

Valor de retorno

Os seguintes valores devolvidos por esta função são definidos no ficheiro de cabeçalho WbemCli.h , ou pode defini-los como constantes no seu código:

Constante Valor Description
WBEM_E_ACCESS_DENIED 0x80041003 O utilizador não tem permissão para atualizar uma instância da classe especificada.
WBEM_E_FAILED 0x80041001 Ocorreu um erro não especificado.
WBEM_E_INVALID_CLASS 0x80041010 A classe que suporta esta instância não é válida.
WBEM_E_ILLEGAL_NULL 0x80041028 A null foi especificado para uma propriedade que não pode ser null, como uma que está marcada por um Indexed qualificador de ou Not_Null .
WBEM_E_INVALID_OBJECT 0x8004100f A instância especificada não é válida. (Por exemplo, chamar PutInstanceWmi com uma classe devolve este valor.)
WBEM_E_INVALID_PARAMETER 0x80041008 Um parâmetro não é válido.
WBEM_E_ALREADY_EXISTS 0x80041019 A WBEM_FLAG_CREATE_ONLY bandeira foi especificada, mas a instância já existe.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY foi especificado em lFlags, mas a instância não existe.
WBEM_E_OUT_OF_MEMORY 0x80041006 Não existe memória suficiente para completar a operação.
WBEM_E_SHUTTING_DOWN 0x80041033 O WMI provavelmente estava parado e a reiniciar. Liga novamente para o ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 A ligação de chamada remota ao procedimento (RPC) entre o processo atual e o WMI falhou.
WBEM_S_NO_ERROR 0 A chamada de função foi bem-sucedida.

Observações

Esta função envolve uma chamada para o método IWbemServices::P utInstance .

A PutInstanceWmi função suporta apenas a criação de instâncias e a atualização de instâncias de classes existentes. Dependendo de como o pCtx parâmetro está definido, algumas ou todas as propriedades da instância são atualizadas.

Quando a instância apontada por pInst pertence a uma subclasse, a Gestão do Windows chama todos os fornecedores responsáveis pelas classes das quais a subclasse deriva. Todos estes prestadores têm de ter sucesso para que o pedido original PutInstanceWmi seja aprovado. O fornecedor que suporta a classe mais alta na hierarquia é chamado primeiro. A ordem de chamada continua com a subclasse da classe mais alta e prossegue de cima para baixo até que a Gestão do Windows chegue ao fornecedor da classe que detém a instância apontada por pInst. A Gestão do Windows não chama os fornecedores de nenhuma das classes filhos de uma instância.

Quando uma aplicação tem de atualizar uma instância que pertence a uma hierarquia de classes, o pInst parâmetro deve apontar para a instância que contém as propriedades a serem modificadas. Ou seja, considere uma instância alvo que pertence à Classe B. A ClassB instância deriva da Classe A e ClassA define a propriedade PropA. Se uma aplicação quiser alterar o valor de PropA na ClassB instância, deve definir pInst para essa instância em vez de uma instância de ClassA.

Não é permitido invocar PutInstanceWmi uma instância de uma classe abstrata.

Se a chamada de função falhar, pode obter informação adicional de erro chamando a função GetErrorInfo .

Requerimentos

Plataformas: Consulte Requisitos do sistema.

Cabeçalho: WMINet_Utils.idl

Versões do .NET Framework: Disponível desde a 4.7.2

Consulte também