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