Partager via


SWbemServicesEx.PutAsync method

La méthode PutAsync de l’objet SWbemServicesEx enregistre un objet de manière asynchrone dans un espace de noms. Lorsqu’elle réussit, cette méthode envoie un événement OnCompleted à l’objet SWbemSink spécifié en tant que paramètre d’entrée.

Cette méthode est appelée en mode asynchrone. Pour plus d’informations, consultez Appel d’une méthode.

Pour obtenir une explication de cette syntaxe, consultez Conventions de document pour l’API de script.

Syntaxe

SWbemServicesEx.PutAsync( _
  ByVal objWbemSink, _
  ByVal ojbWbemObject, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Paramètres

objWbemSink

Obligatoire. Récepteur d’objets qui reçoit les objets de façon asynchrone. Créez un objet SWbemSink pour recevoir les objets.

ojbWbemObject

Obligatoire. Nouvel objet à placer dans l’espace de noms. Il peut s’agir d’un objet nouvellement créé ou d’un objet modifié.

iFlags [optional]

Ce paramètre détermine si l’appel crée ou met à jour l’objet et si l’appel retourne immédiatement. Ce paramètre peut accepter les valeurs suivantes.

wbemChangeFlagUpdateCompatible (0 (0x0))

Permet à une classe d’être mise à jour quand il n’existe aucune classe dérivée ni aucune instance pour la classe. Elle autorise également les mises à jour dans tous les cas quand les modifications ont été apportées à des qualificateurs qui ne sont pas importants, comme 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 échouera.

wbemChangeFlagUpdateSafeMode (32 (0x20))

Autorise les mises à jour des classes, même quand il existe des classes enfants, tant que la modification n’entraîne aucun conflit avec les classes enfants. Utilisez cet indicateur lors de l’ajout d’une nouvelle propriété à une classe de base qui n’est mentionnée précédemment dans aucune des classes enfants. Si la classe comprend des instances, la mise à jour échouera.

wbemChangeFlagUpdateForceMode (64 (0x40))

Cet indicateur 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 Forcer, 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 échouera.

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. Cet indicateur appelle la méthode en mode synchrone.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Entraîne l’écriture par WMI des données de modification de classe et de la définition de classe de base. Pour plus d’informations, consultez Localisation des informations de classe WMI.

objWbemNamedValueSet [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 qui assure la maintenance de la demande. 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 [facultatif]

Un objet SWbemNamedValueSet qui retourne au récepteur d’objets pour identifier la source de l’appel asynchrone d’origine. Utilisez ce paramètre pour effectuer 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)

Une valeur Null a été spécifiée pour une propriété qui ne peut pas être Null. Par exemple, une propriété de ce type est marquée par un qualificateur Key, Indexedou 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 les résultats et l’état sont retournés à l’appelant par le biais d’événements remis au récepteur spécifié dans objWbemSink. Pour gérer chaque objet lorsqu’il arrive, créez un objet objWbemSink.Sous-routine d’événement OnObjectReady. Tout traitement effectué après l’arrivée de tous les objets est effectué dans une sous-routine pour l’objet objWbemSink. Événement OnCompleted.

Un rappel asynchrone permet à un utilisateur non authentifié de fournir des données au récepteur. Cela présente des risques quant à la sécurité de vos scripts et applications. Pour éliminer ces risques, consultez Configuration de la sécurité sur un appel asynchrone.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
En-tête
Wbemdisp.h
Bibliothèque de types
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_ISWbemServicesEx
IID
IID_ISWbemServicesEx