Partilhar via


Função PutClassWmi

Cria uma nova classe ou atualiza uma existente.

Nota

Esta API destina-se apenas a utilização interna. Não se destina a ser utilizado a partir do código do programador.

Sintaxe

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

Parâmetros

pObject
[in] Um ponteiro para uma definição de classe válida. Tem de ser inicializada corretamente com todos os valores de propriedade necessários.

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

Constante Valor Descrição
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Se estiver definido, a WMI não armazena nenhum qualificador com o sabor alterado.
Se não estiver definido, presume-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 Crie a classe se não existir ou substitua-a se já existir.
WBEM_FLAG_UPDATE_ONLY 1 Atualize a classe. A classe tem de existir para que a chamada seja bem-sucedida.
WBEM_FLAG_CREATE_ONLY 2 Crie a classe. A chamada falha se a classe já existir.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 O sinalizador causa uma chamada semissíncrona.
WBEM_FLAG_OWNER_UPDATE 0x10000 Os fornecedores push têm de especificar este sinalizador ao chamar PutClassWmi para indicar que esta classe foi alterada.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Permite que uma classe seja atualizada se não existirem classes derivadas nem instâncias dessa classe. Também permite atualizações em todos os casos se a alteração for apenas para qualificadores sem importância, como o qualificador Descrição. Se a classe tiver instâncias ou alterações forem para qualificadores importantes, a atualização falhará.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Permite atualizações de classes, mesmo que existam classes subordinadas, desde que a alteração não cause conflitos com as classes subordinadas. Por exemplo, este sinalizador permite que uma nova propriedade seja adicionada à classe base que não foi mencionada anteriormente em nenhuma das classes subordinadas. Se a classe tiver instâncias, a atualização falhará.
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 força atualizações de classes quando existem classes subordinadas em conflito. Por exemplo, este sinalizador força uma atualização se um qualificador de classe for definido numa classe subordinada e a classe base tentar adicionar o mesmo qualificador que entra em conflito com o existente. No modo de força, o conflito de tis é resolvido ao eliminar o qualificador em conflito na classe subordinada.

pCtx
[in] Normalmente, este valor é null. Caso contrário, é um ponteiro para uma instância IWbemContext que pode ser utilizada pelo fornecedor que está a fornecer as classes pedidas.

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

Valor devolvido

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 Descrição
WBEM_E_ACCESS_DENIED 0x80041003 O utilizador não tem permissão para criar ou modificar classes.
WBEM_E_FAILED 0x80041001 Ocorreu um erro não especificado.
WBEM_E_INVALID_CLASS 0x80041010 A classe especificada não é válida. Normalmente, isto indica que pObject especifica um objeto de instância.
WBEM_E_INVALID_PARAMETER 0x80041008 Um parâmetro não é válido.
WBEM_E_INVALID OPERATION 0x80041016 O nome da classe especificado não é válido.
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 Foi feita uma tentativa de fazer uma alteração que invalidaria uma subclasse.
WBEM_E_ALREADY_EXISTS 0x80041019 O WBEM_FLAG_CREATE_ONLY sinalizador foi especificado, mas a classe já existe.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY foi especificado em lFlagse a classe não foi encontrada.
WBEM_E_INCOMPLETE_CLASS 0x80041020 As propriedades necessárias para as classes não foram todas definidas.
WBEM_E_OUT_OF_MEMORY 0x80041006 Não existe memória suficiente disponível para concluir a operação.
WBEM_E_SHUTTING_DOWN 0x80041033 A WMI foi provavelmente parada e reiniciada. Ligue novamente para ConnectServerWmi .
WBEM_E_TRANSPORT_FAILURE 0x80041015 A ligação de chamada de procedimento remoto (RPC) entre o processo atual e a WMI falhou.
WBEM_S_NO_ERROR 0 A chamada de função foi efetuada com êxito.

Observações

Esta função encapsula uma chamada para o método IWbemServices::P utClass .

O utilizador não pode criar classes com nomes que comecem ou terminem com um caráter de sublinhado.

Se a chamada da função falhar, pode obter informações de erro adicionais ao chamar a função GetErrorInfo .

Requisitos

Plataformas: Veja Requisitos do Sistema.

Cabeçalho: WMINet_Utils.idl

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

Ver também