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