Partager via


PutInstanceWmi, fonction

Crée ou met à jour une instance d’une classe existante. L’instance est écrite dans le référentiel WMI.

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 PutInstanceWmi (
   [in] IWbemClassObject*    pInst,
   [in] long                 lFlags,
   [in] IWbemContext*        pCtx,
   [out] IWbemCallResult**   ppCallResult
);

Paramètres

pInst
[in] Pointeur vers l’instance à écrire.

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 la valeur est définie, WMI ne stocke aucun qualificateur avec la saveur Amended.
Si elle n’est pas 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éer l’instance si elle n’existe pas, ou la remplacer si elle existe.
WBEM_FLAG_UPDATE_ONLY 1 Mettre à jour l’instance. Pour que l’appel réussisse, l’instance doit exister.
WBEM_FLAG_CREATE_ONLY 2 Créez l'instance. L’appel échoue si l’instance existe.
WBEM_FLAG_RETURN_IMMEDIATELY 0x10 L’indicateur provoque un appel semi-synchrone.

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 mettre à jour une instance de la classe spécifiée.
WBEM_E_FAILED 0x80041001 Une erreur inconnue s’est produite.
WBEM_E_INVALID_CLASS 0x80041010 La classe prenant en charge cette instance n’est pas valide.
WBEM_E_ILLEGAL_NULL 0x80041028 La valeur null a été spécifiée pour une propriété qui ne peut pas être null, telle une propriété marquée par un qualificateur Indexed ou Not_Null.
WBEM_E_INVALID_OBJECT 0x8004100f L'instance spécifiée n'est pas valide. (Par exemple, l’appel de PutInstanceWmi avec une classe retourne cette valeur.)
WBEM_E_INVALID_PARAMETER 0x80041008 Un paramètre n'est pas valide.
WBEM_E_ALREADY_EXISTS 0x80041019 L’indicateur WBEM_FLAG_CREATE_ONLY a été spécifié, mais l’instance existe déjà.
WBEM_E_NOT_FOUND 0x80041002 WBEM_FLAG_UPDATE_ONLY a été spécifié dans lFlags, mais l’instance n’existe pas.
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 encapsule un appel à la méthode IWbemServices::PutInstance.

La fonction PutInstanceWmi ne prend en charge que la création d’instances et la mise à jour d’instances de classes existantes. Selon la façon dont le paramètre pCtx est défini, certaines ou toutes les propriétés de l’instance sont mises à jour.

Lorsque l’instance sur laquelle pointe pInst appartient à une sous-classe, Windows Management appelle tous les fournisseurs responsables des classes dont la sous-classe dérive. Tous ces fournisseurs doivent réussir pour que la requête d’origine PutInstanceWmi réussisse. Le fournisseur prenant en charge la classe la plus haute dans la hiérarchie est appelé en premier. L’ordre d’appel continue avec la sous-classe de la classe la plus haute, et poursuit de haut en bas jusqu’à ce que Windows Management atteigne le fournisseur pour la classe propriétaire de l’instance vers laquelle pointe pInst. Windows Management n’appelle les fournisseurs pour aucune classe enfant d’une instance.

Lorsqu’une application doit mettre à jour une instance appartenant à une hiérarchie de classes, le paramètre pInst doit pointer vers l’instance contenant les propriétés à modifier. Autrement dit, considérons une instance cible appartenant à ClassB. L’instance ClassB dérive de ClassA, et ClassA définit la propriété PropA. Si une application souhaite apporter une modification à la valeur de PropA dans l’instance ClassB, elle doit définir pInst sur cette instance plutôt qu’une instance de ClassA.

L’appel de PutInstanceWmi sur une instance d’une classe abstraite n’est pas autorisé.

Si l’appel de fonction échoue, vous pouvez obtenir des informations d’erreur supplémentaires 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