SWbemObject.Exe_ méthode cMethodAsync

La méthode _ ExecMethodAsync de SWbemObject exécute de manière asynchrone une méthode exportée par un fournisseur de méthode. Cette méthode est similaire à SWbemServices.ExecMethodAsync, mais fonctionne directement sur l’objet de la méthode à exécuter. Windows WMI (Management Instrumentation) n’implémente pas cette méthode. Le fournisseur implémente cette méthode.

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

Syntaxe

objOutParams = .ExecMethodAsync_( _
  ByVal objWbemSink, _
  ByVal strMethodName, _
  [ ByVal objwbemInParams ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Paramètres

objWbemSink [ dans]

Obligatoire. Il s’agit du récepteur d’objets qui reçoit les résultats de l’appel de la méthode. Les paramètres sortants sont envoyés à l’événement SWbemSink. OnObjectReady du récepteur d’objets fourni. Les résultats du mécanisme d’appel sont envoyés à l’événement SWbemSink. OnCompleted du récepteur d’objets fourni. Notez que SWbemSink. OnCompleted ne reçoit pas le code de retour de la méthode. Toutefois, il reçoit le code de retour du mécanisme réel de retour d’appel et est utile uniquement pour vérifier que l’appel s’est produit ou qu’il a échoué pour des raisons mécaniques. Le code de résultat retourné par la méthode est retourné dans l’objet de paramètre sortant fourni à SWbemSink. OnObjectReady. Si un code d’erreur est retourné, l’objet IWbemObjectSink fourni n’est pas utilisé. Si l’appel réussit, l’implémentation IWbemObjectSink de l’utilisateur est appelée pour indiquer le résultat de l’opération.

strMethodName [ dans]

Obligatoire. Il s’agit du nom de la méthode pour l’objet.

objwbemInParams [ dans, facultatif]

Il s’agit d’un objet SWbemObject qui contient les paramètres d’entrée de la méthode en cours d’exécution. Par défaut, ce paramètre n’est pas défini. Pour plus d’informations, consultez construction d’objets inparamètres et analyse d’objets de paramètres de paramètres.

IFlags [ dans, facultatif]

Entier qui détermine le comportement de l’appel. Ce paramètre peut accepter les valeurs suivantes.

wbemFlagSendStatus * * * * (128 (0x80))

Fait en sorte que les appels asynchrones envoient 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 d’État au gestionnaire d’événements OnProgress pour le récepteur d’objets.

objwbemNamedValueSet [ dans, facultatif]

En règle générale, il n’est pas défini. Dans le cas contraire, 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 traite la requête. Un fournisseur qui prend en charge ou requiert ces 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 [ dans, 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 d’objets 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 n’a pas de valeur de retour. Si l’appel réussit, un objet de paramètres de paramètre , qui est également un objet SWbemObject , est fourni au récepteur spécifié dans objWbemSink. L’objet de paramètres de sortie retournés contient les paramètres de sortie et la valeur de retour pour la méthode en cours d’exécution.

Codes d’erreur

Une fois la méthode ExecMethodAsync _ terminée, l’objet Err peut contenir l’un des codes d’erreur répertoriés dans la liste suivante.

wbemErrFailed -2147749889 (0x80041001)

Erreur non spécifiée.

wbemErrInvalidClass -2147749904 (0x80041010)

La classe spécifiée n’est pas valide.

wbemErrInvalidParameter -2147749896 (0x80041008)

Un paramètre spécifié n’est pas valide.

wbemErrOutOfMemory -2147749894 (0x80041006)

Mémoire insuffisante pour terminer l’opération.

wbemErrInvalidMethod -2147749934 (0x8004102E)

La méthode demandée n’était pas disponible.

wbemErrAccessDenied -2147749891 (0x80041003)

L’utilisateur actuel n’a pas été autorisé à exécuter la méthode.

Remarques

Utilisez la méthode SWbemObject.Exe_ cMethodAsync comme alternative à l’accès direct pour l’exécution d’une méthode de fournisseur lorsque vous ne pouvez pas exécuter une méthode directement. Par exemple, si votre méthode a des paramètres out, utilisez la méthode SWbemObject.ExecMethodAsync _ avec un langage de script qui ne prend pas en charge les paramètres de sortie. Dans le cas contraire, il est recommandé d’appeler une méthode à l’aide d’un accès direct. Pour plus d’informations, consultez manipulation d’informations sur les classes et les instances.

Cet appel est retourné immédiatement. Les objets et l’État demandés sont retournés à l’appelant via des rappels remis au récepteur spécifié dans objWbemSink. Pour traiter chaque objet lorsqu’il arrive, créez un objWbemSink. Sous-routine d’événement OnObjectReady . Une fois que tous les objets sont retournés, vous pouvez effectuer le traitement final dans votre implémentation de objWbemSink. Événement OnCompleted .

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 vos applications. Pour éliminer les risques, utilisez une communication semi-synchrone ou une communication synchrone. Pour plus d’informations, consultez appel d’une méthode.

Si la méthode en cours d’exécution a des paramètres d’entrée, l’objet Parameters et le paramètre objWbemInParam doivent être construits comme décrit dans construction d’objets inparamètres et analyse d’objets de paramètresde sortie.

La méthode SWbemObject.Exe_ cMethodAsync suppose que l’objet représenté par SWbemObject contient la méthode à exécuter. La méthode SWbemServices.ExecMethodAsync requiert un chemin d’accès à un objet.

Exemples

L’exemple suivant illustre la méthode ExecMethodAsync . le script crée un objet _ processus Win32 qui représente un processus en cours d’exécution Bloc-notes. Il illustre la configuration d’un objet Parameters et explique comment obtenir les résultats d’un objet de paramètres de paramètres .

Pour obtenir un script qui montre les mêmes opérations exécutées de façon synchrone, consultez SWbemObject.ExecMethod. Pour obtenir un exemple d’utilisation de l’accès direct, consultez créer une méthode dans la classe _ processus Win32. Pour obtenir un exemple de la même opération à l’aide d’un objet SWbemServices , consultez SWbemServices.ExecMethodAsync.

On Error Resume Next

'Get a Win32_Process class description
Set oProcess = GetObject("winmgmts:Win32_Process")

' Create the SWbemMethod.InParameters object
' to hold the input parameter needed
' for the Win32_Process.Create method call.
' The oProcess.Methods_("Create") call
' obtains a class object that defines
' the correct input parameters
' for the Win32_Process.Create call.
' The InParameters object is an 
' SWbemObject object so SWbemObject.SpawnInstance_
' can be called to create it.
Set oInParams = oProcess.Methods_("Create"). _
    InParameters.SpawnInstance_

' Specify the name of the process to be run.
oInParams.CommandLine = "Notepad.exe"

' Create a sink to receive event resulting
' from the ExecMethodAsync call.
Set Sink = wscript.CreateObject( _
    "WbemScripting.SWbemSink", "Sink_")

' Call the Win32_Process.Create method asynchronously. Set up a 
' wait so the results of the method execution can be returned to 
' the sink subroutines.
bDone = false

' Call SWbemObject.ExecMethodAsync on the oProcess object.
oProcess.ExecMethodAsync_ Sink, "Create", oInParams, 0 
' 
while not bDone
    wscript.sleep 1000
wend

' Sink subroutines
sub Sink_OnObjectReady(oOutParams, oContext)
    wscript.echo "Sink_OnObjectReady subroutine " _
    & VBNewLine & "ReturnValue = " _
    & oOutParams.ReturnValue & VBNewLine & _
    "ProcessId = " & oOutParams.ProcessId
end sub

sub Sink_OnCompleted(HResult, LastErrorObj, oContext)
    wscript.echo "Sink_OnCompleted subroutine, hresult = " _
    & hex(HResult)
    bdone = true
end sub

Configuration requise

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 _ SWbemObject
IID
IID _ ISWbemObject

Voir aussi

M

SWbemServices.ExecMethodAsync