Compartilhar via


Função PutClassWmi

Cria uma nova classe ou atualiza uma existente.

Observação

Esta API é somente para uso interno. Ela não é destinada ao uso do código do desenvolvedor.

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. Ele deve ser inicializado corretamente com todos os valores de propriedade necessários.

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

Constante Valor Descrição
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Se definido, o WMI não armazenará nenhum qualificador com variante alterada.
Se não estiver definido, supõe-se que esse objeto não está localizado e todos os qualificadores estão armazenados com essa instância.
WBEM_FLAG_CREATE_OR_UPDATE 0 Crie a classe se ela não existir ou substitua-a se já existir.
WBEM_FLAG_UPDATE_ONLY 1 Atualize a classe. A classe precisa existir para que a chamada seja bem-sucedida.
WBEM_FLAG_CREATE_ONLY 2 Crie a classe. A chamada falhará se a classe já existir.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 O sinalizador causa uma chamada de método semissíncrono.
WBEM_FLAG_OWNER_UPDATE 0x10000 Os provedores de push devem especificar esse sinalizador ao chamar PutClassWmi para indicar que essa classe foi alterada.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Permite que uma classe seja atualizada se não houver classes derivadas e nenhuma instância 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 para qualificadores importantes, a atualização falhará.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Permite atualizações de classes mesmo que haja classes filho, desde que a alteração não cause conflitos com classes filho. Por exemplo, esse sinalizador permite que uma nova propriedade seja adicionada à classe base que não foi mencionada anteriormente em nenhuma das classes filho. Se a classe tiver instâncias, a atualização falhará.
WBEM_FLAG_UPDATE_FORCE_MODE 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 for definido em uma classe filho 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 excluindo o qualificador conflitante na classe filho.

pCtx
[in] Normalmente, esse valor é null. Caso contrário, ele é um ponteiro para uma instância IWbemContext que pode ser usada pelo provedor que está fornecendo as classes solicitadas.

ppCallResult
[out] Se null, esse parâmetro não está em uso. Se lFlags contiver WBEM_FLAG_RETURN_IMMEDIATELY, a função retornará imediatamente com WBEM_S_NO_ERROR. O parâmetro ppCallResult recebe um ponteiro para um novo objeto IWbemCallResult .

Valor retornado

Os seguintes valores retornados por essa função são definidos no arquivo de cabeçalho WbemCli.h, ou você pode defini-los como constantes em seu código:

Constante Valor Descrição
WBEM_E_ACCESS_DENIED 0x80041003 O usuário 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 é inválida. Normalmente, isso 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 A nome de classe especificado é inválida.
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 sinalizador WBEM_FLAG_CREATE_ONLY foi especificado, mas a classe já existe.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY foi especificado em lFlags, e a classe não foi encontrada.
WBEM_E_INCOMPLETE_CLASS 0x80041020 As propriedades necessárias para classes não foram todas definidas.
WBEM_E_OUT_OF_MEMORY 0x80041006 Não há memória disponível suficiente para concluir a operação.
WBEM_E_SHUTTING_DOWN 0x80041033 O WMI provavelmente foi interrompido e reiniciado. Chame ConnectServerWmi novamente.
WBEM_E_TRANSPORT_FAILURE 0x80041015 Falha no link da RPC (chamada de procedimento remoto) entre o processo atual e o WMI.
WBEM_S_NO_ERROR 0 A chamada de função foi bem-sucedida.

Comentários

Essa função faz o encapsulamento de uma chamada para o método IWbemServices::PutClass.

O usuário não pode criar classes com nomes que começam ou terminam com um caractere sublinhado.

Se a chamada de função falhar, você pode obter informações de erro adicionais chamando a função GetErrorInfo.

Requisitos

Plataformas: confira Requisitos do sistema.

Header: WMINet_Utils.idl

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

Confira também