Méthode SWbemObject.PutAsync_
La méthode PutAsync\_ de SWbemObject crée ou met à jour de manière asynchrone une instance ou un objet de classe vers Windows Management Instrumentation (WMI). Vous pouvez utiliser cette méthode après avoir modifié des propriétés ou des méthodes dans un objet SWbemObject, et vos modifications sont écrites dans WMI.
Pour obtenir une explication de cette syntaxe, consultez Conventions de document pour l’API Scripting.
Syntaxe
SWbemObject.PutAsync_( _
ByVal objWbemSink, _
[ ByVal iFlags ], _
[ ByVal objWbemNamedValueSet ], _
[ ByVal objWbemAsyncContext ] _
)
Paramètres
-
objWbemSink [in]
-
Obligatoire. Récepteur d’objets qui reçoit de manière asynchrone le résultat de l’opération put.
-
iFlags [in, facultatif]
-
Détermine si l’appel crée ou met à jour la classe ou l’instance et si l’appel est retourné immédiatement. Ce paramètre peut accepter les valeurs suivantes.
-
wbemChangeFlagUpdateCompatible (0 (0x0))
-
Permet à une classe d’être mise à jour s’il n’existe aucune classe dérivée et qu’il n’y a pas d’instances pour cette classe. Cela permet également les mises à jour dans tous les cas si les modifications ont été apportées à des qualificateurs qui ne sont pas importants (par exemple, le qualificateur Description). Il s’agit du comportement par défaut de cet appel et est utilisé pour la compatibilité avec les versions précédentes de WMI. Si la classe comprend des instances, la mise à jour échoue.
-
wbemChangeFlagUpdateSafeMode (32 (0x20))
-
Autorise les mises à jour des classes, même s’il existe des classes enfants, si la modification n’entraîne aucun conflit avec les classes enfants. Vous pouvez utiliser cet indicateur lors de l’ajout d’une nouvelle propriété à une classe de base qui n’a été mentionnée dans aucune des classes enfants. Si la classe comprend des instances, la mise à jour échoue.
-
WbemChangeFlagUpdateForceMode (64 (0x40))
-
Force les mises à jour des classes lorsqu’il existe des classes enfants en conflit. Par exemple, cet indicateur force une mise à jour quand 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 force, ce conflit est résolu par la suppression du qualificateur en conflit dans la classe enfant. Si la classe comprend des instances, la mise à jour échoue.
L’utilisation du mode force pour mettre à jour une classe statique entraîne la suppression de toutes les instances de cette classe. Une mise à jour forcée sur une classe de fournisseur ne supprime pas les instances de la classe.
-
wbemChangeFlagCreateOrUpdate (0 (0x0))
-
Provoque la création de la classe ou de l’instance si elle n’existe pas, ou le remplacement si elle existe déjà.
-
wbemChangeFlagCreateOnly (2 (0x2))
-
Utilisé pour la création uniquement. L’appel échoue si la classe ou l’instance existe.
-
wbemChangeFlagUpdateOnly (1 (0x1))
-
Provoque la mise à jour de cet appel. Pour que l’appel réussisse, la classe ou l’instance doit exister.
-
wbemFlagReturnImmediately (16 (0x10))
-
Provoque le retour immédiat de l’appel.
-
wbemFlagReturnWhenComplete (0 (0x0))
-
Provoque le blocage de cet appel jusqu’à ce que la requête soit terminée.
-
wbemFlagSendStatus (128 (0x80))
-
Provoque des appels asynchrones pour envoyer des mises à jour d’état au gestionnaire d’événements SWbemSink.OnProgress pour le récepteur d’objets.
-
wbemFlagDontSendStatus (0 (0x0))
-
Empêche les appels asynchrones d’envoyer des mises à jour de l’état du récepteur d’objets au gestionnaire d’événements OnProgress.
-
wbemFlagUseAmendedQualifiers (131072 (0x20000))
-
Amène WMI à écrire les données de modification de classe avec la définition de classe de base. Pour plus d’informations sur les qualificateurs modifiés, consultez Localisation des informations de classe WMI.
objWbemNamedValueSet [in, facultatif]
En règle générale, ceci n’est pas défini. Sinon, il s’agit d’un objet SWbemNamedValueSet dont les éléments représentent les informations de contexte qui peuvent être utilisées par le fournisseur répondant à la requête. Un fournisseur qui prend en charge ou requiert de telles informations doit documenter les noms de valeur reconnus, le type de données de la valeur, les valeurs autorisées et la sémantique.
objWbemAsyncContext [in, facultatif]
Il s’agit d’un objet SWbemNamedValueSet qui retourne au récepteur d’objets pour identifier la source de l’appel asynchrone d’origine. Utilisez ce paramètre si vous effectuez plusieurs appels asynchrones à l’aide du même récepteur d’objets. Pour utiliser ce paramètre, créez un objet SWbemNamedValueSet et utilisez la méthode SWbemNamedValueSet.Add pour ajouter une valeur qui identifie l’appel asynchrone que vous effectuez. Cet objet SWbemNamedValueSet est retourné au récepteur de l’objet, et la source de l’appel peut être extraite à l’aide de la méthode SWbemNamedValueSet.Item. Pour plus d’informations, consultez Appel d’une méthode.
Valeur retournée
Cette méthode ne retourne pas de valeur. Si l’appel réussit, l’événement OnObjectPut du récepteur d’objets fourni reçoit un objet SWbemObjectPath, qui contient le chemin d’accès de l’objet de l’instance ou de la classe qui a été correctement validée sur WMI.
Codes d’erreur
Une fois la méthode PutAsync_ terminée, l’objet Err peut contenir l’un des codes d’erreur de la liste suivante.
-
wbemErrAccessDenied – 2147749891 (0x80041003)
-
L’utilisateur actuel n’a pas l’autorisation de mettre à jour une instance de la classe spécifiée.
-
wbemErrAlreadyExists - 2147749913 (0x80041019)
-
L’indicateur wbemChangeFlagCreateOnly a été spécifié, mais l’instance existe déjà.
-
wbemErrFailed – 2147749889 (0x80041001)
-
Erreur non spécifiée.
-
wbemErrIllegalNull - 2147749898 (0x8004100A)
-
La valeur Nothing a été spécifiée pour une propriété qui peut ne pas être Nothing. Par exemple, une propriété de ce type est marquée par un qualificateur Key, Indexed ou Not_Null.
-
wbemErrInvalidObject – 2147749908 (0x80041014)
-
L'instance spécifiée n'est pas valide.
-
wbemErrInvalidParameter - 2147749896 (0x80041008)
-
Un paramètre spécifié n’est pas valide.
-
wbemErrNotFound - 2147749890 (0x80041002)
-
L’indicateur wbemChangeFlagUpdateOnly a été spécifié, mais l’instance ou la classe n’existe pas.
-
wbemErrIncompleteClass - 2147749920 (0x80041020)
-
Les propriétés nécessaires pour les classes n’ont pas toutes été définies.
-
wbemErrOutOfMemory - 2147749894 (0x80041006)
-
La mémoire disponible est insuffisante pour terminer cette opération.
Notes
Cet appel retourne immédiatement, et le résultat de l’opération put est retourné à l’appelant par le biais de rappels remis au récepteur spécifié dans objWbemSink. Implémentez objWbemSink. Méthode OnObjectPut pour obtenir le chemin d’accès de l’objet de l’instance ou de la classe écrite dans le référentiel WMI. Pour plus d’informations sur les méthodes de réception, consultez Appel d’une méthode.
Un rappel asynchrone permet à un utilisateur non authentifié de fournir des données au récepteur. Cela pose des risques de sécurité pour vos scripts et applications. Pour éliminer les risques, utilisez la communication semi-synchrone ou synchrone. Pour plus d’informations, consultez Appel d’une méthode.
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows Vista |
Serveur minimal pris en charge |
Windows Server 2008 |
En-tête |
|
Bibliothèque de types |
|
DLL |
|
CLSID |
CLSID_SWbemObject |
IID |
IID_ISWbemObject |