Partager via


PutClassWmi, fonction

Crée une classe ou met à jour une classe existante.

Notes

Cette API est destinée à un usage interne uniquement. Elle n’est pas destinée à être utilisée dans le code du développeur.

Syntaxe

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

Paramètres

pObject
[in] Pointeur vers une définition de classe valide. Il doit être correctement initialisé avec toutes les valeurs de propriété nécessaires.

lFlags
[in] Combinaison d’indicateurs qui affectent le comportement de cette fonction. Les valeurs suivantes sont définies dans le fichier d’en-tête WbemCli.h, ou vous pouvez les définir comme constantes dans votre code :

Constant Valeur Description
WBEM_FLAG_USE_AMENDED_QUALIFIERS 0x20000 Si une valeur est définie, WMI ne stockera aucun qualificateur avec la saveur Amended.
Si aucune valeur n’est définie, il est supposé que cet objet n’est pas localisé, et que tous les qualificateurs sont stockés avec cette instance.
WBEM_FLAG_CREATE_OR_UPDATE 0 Crée la classe si elle n’existe pas, ou la remplace si elle existe.
WBEM_FLAG_UPDATE_ONLY 1 Met à jour la classe. Pour que l’appel réussisse, la classe doit exister.
WBEM_FLAG_CREATE_ONLY 2 Crée la classe. L’appel échoue si la classe existe déjà.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 L’indicateur provoque un appel semi-synchrone.
WBEM_FLAG_OWNER_UPDATE 0x10000 Les fournisseurs Push doivent spécifier cet indicateur lors de l’appel à PutClassWmi pour indiquer que cette classe a changé.
WBEM_FLAG_UPDATE_COMPATIBLE 0 Permet à une classe d’être mise à jour s’il n’existe aucune classe dérivée ni aucune instance de cette classe. Elle autorise également les mises à jour dans tous les cas si les modifications ont été apportées à des qualificateurs qui ne sont pas importants, comme le qualificateur Description. Si la classe comprend des instances ou si les modifications ont été apportées à des qualificateurs importants, la mise à jour échouera.
WBEM_FLAG_UPDATE_SAFE_MODE 0x20 Autorise les mises à jour des classes, même s’il existe des classes enfants, tant que la modification n’entraîne aucun conflit avec les classes enfants. Par exemple, cet indicateur permet d’ajouter une nouvelle propriété à la classe de base qui n’a pas été mentionnée précédemment dans les classes enfants. Si la classe comprend des instances, la mise à jour échouera.
WBEM_FLAG_UPDATE_FORCE_MODE 0x40 Force les mises à jour des classes lorsqu’il existe des classes enfants en conflit. Par exemple, cet indicateur force une mise à jour si un qualificateur de classe est défini dans une classe enfant et si la classe de base tente d’ajouter le même qualificateur qui est en conflit avec celui existant. En mode Forcer, ce conflit est résolu par la suppression du qualificateur en conflit dans la classe enfant.

pCtx
[in] En règle générale, cette valeur est null. Sinon, il s’agit d’un pointeur vers une instance IWbemContext utilisable par le fournisseur des classes demandées.

ppCallResult
[out] Si la valeur est null, ce paramètre n’est pas utilisé. Si lFlags contient WBEM_FLAG_RETURN_IMMEDIATELY, la fonction retourne immédiatement WBEM_S_NO_ERROR. Le paramètre ppCallResult reçoit un pointeur vers un nouvel objet IWbemCallResult.

Valeur retournée

Les valeurs suivantes renvoyées par cette fonction sont définies dans le fichier d’en-tête WbemCli.h, ou vous pouvez les définir comme constantes dans votre code :

Constant Valeur Description
WBEM_E_ACCESS_DENIED 0x80041003 L’utilisateur n’a pas l’autorisation de créer ni de modifier les classes.
WBEM_E_FAILED 0x80041001 Une erreur inconnue s’est produite.
WBEM_E_INVALID_CLASS 0x80041010 La classe spécifiée n'est pas valide. En règle générale, cela indique que pObject spécifie un objet d’instance.
WBEM_E_INVALID_PARAMETER 0x80041008 Un paramètre n'est pas valide.
WBEM_E_INVALID OPERATION 0x80041016 Le nom de classe spécifié n’est pas valide.
WBEM_E_CLASS_HAS_CHILDREN 0x80041025 Une tentative de modification qui rendrait une sous-classe non valide a été effectuée.
WBEM_E_ALREADY_EXISTS 0x80041019 L’indicateur WBEM_FLAG_CREATE_ONLY a été spécifié, mais la classe existe déjà.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY a été spécifié dans lFlags, et la classe est introuvable.
WBEM_E_INCOMPLETE_CLASS 0x80041020 Les propriétés nécessaires pour les classes n’ont pas toutes été définies.
WBEM_E_OUT_OF_MEMORY 0x80041006 La mémoire n'est pas suffisante pour terminer cette opération.
WBEM_E_SHUTTING_DOWN 0x80041033 WMI a probablement été arrêté et est en cours de redémarrage. Appelez de nouveau ConnectServerWmi.
WBEM_E_TRANSPORT_FAILURE 0x80041015 Le lien d’appel de procédure distante (RPC) entre le processus actuel et WMI a échoué.
WBEM_S_NO_ERROR 0 L’appel de fonction a abouti.

Notes

Cette fonction wrappe un appel à la méthode IWbemServices::PutClass.

L’utilisateur peut ne pas créer de classes dont le nom commence ou se termine par un caractère de soulignement.

Si l’appel de fonction échoue, vous pouvez obtenir des informations supplémentaires sur l’erreur en appelant la fonction GetErrorInfo.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : WMINet_Utils.idl

Versions de .NET Framework : disponibles depuis la version 4.7.2

Voir aussi