SWbemServices.ExecQueryAsync method

La méthode ExecQueryAsync de l’objet SWbemServices exécute une requête pour récupérer des objets. L’appel à cette méthode 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 retourné, créez un objWbemSink.Sous-routine d’événement OnObjectReady .

La 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

objWbemObjectSet = .ExecQueryAsync( _
  [ ByVal objWbemSink ], _
  ByVal strQuery, _
  [ ByVal strQueryLanguage ], _
  [ ByVal iFlags ], _
  [ ByVal objwbemNamedValueSet ], _
  [ ByVal objWbemAsyncContext ] _
)

Paramètres

objWbemSink [facultatif]

Récepteur d’objets qui exécute la requête de manière asynchrone. Créez un objet SWbemSink pour recevoir les objets.

strQuery

Obligatoire. Chaîne qui contient le texte de la requête. Ce paramètre ne peut pas être vide. Pour plus d’informations sur la création de chaînes de requête WMI, consultez Interrogation avec WQL et les informations de référence sur WQL.

strQueryLanguage [facultatif]

Chaîne qui contient le langage de requête à utiliser. Si elle est spécifiée, la valeur doit être « WQL ».

iFlags [facultatif]

Entier qui détermine le comportement de la requête. Ce paramètre peut accepter les valeurs suivantes.

wbemFlagSendStatus (128 (0x80))

Provoque des appels asynchrones pour envoyer des mises à jour de l’état du récepteur d’objets au gestionnaire d’événements OnProgress.

wbemFlagDontSendStatus (0 (0x0))

Empêche les appels asynchrones d’envoyer des mises à jour d’état du récepteur d’objets au gestionnaire d’événements OnProgress.

wbemQueryFlagPrototype (2 (0x2))

Utilisé pour un prototype. Il empêche la requête de se produire et retourne plutôt un objet qui ressemble à un objet de résultat classique.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Permet à WMI de retourner des données de modification de classe avec 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, ce 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 dessert la demande. Un fournisseur qui prend en charge ou nécessite des informations de contexte doit documenter les noms de valeurs reconnues, 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 n’a aucune valeur de retour. En cas de réussite, le récepteur reçoit un événement OnObjectReady par instance. Après la dernière instance, le récepteur d’objets reçoit un événement OnCompleted.

Codes d’erreur

Une fois la méthode ExecQueryAsync 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 nécessaire pour afficher le jeu de résultats.

wbemErrFailed - 2147749889 (0x80041001)

Erreur non spécifiée.

wbemErrInvalidParameter - 2147749896 (0x80041008)

Un paramètre non valide a été spécifié.

wbemErrInvalidQuery - 2147749911 (0x80041017)

La syntaxe de requête n’est pas valide.

wbemErrInvalidQueryType - 2147749912 (0x80041018)

Le langage de requête demandé n’est pas pris en charge.

wbemErrOutOfMemory - 2147749894 (0x80041006)

La mémoire disponible est insuffisante pour terminer cette opération.

Notes

Cet appel retourne le résultat immédiatement. Les objets et l’état demandés sont retournés à l’appelant par le biais via des rappels remis au récepteur spécifié dans objWbemSink. Pour traiter chaque objet lorsqu’il retourne, créez un objWbemSink. Sous-routine d’événement OnObjectReady . Une fois tous les objets retournés, effectuez le traitement final dans votre implémentation de l’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 applications. Pour éliminer les risques, consultez Définition de la sécurité sur un appel asynchrone

La méthode ExecQueryAsync retourne un jeu de résultats vide lorsqu’aucun objet ne correspond aux critères de la requête. Cette méthode retourne des propriétés de clé, que la propriété Key soit demandée ou non dans le paramètre strQuery .

Le nombre de mots clés AND et OR utilisables dans les requêtes WQL est limité. La présence d’un grand nombre de mots clés WQL dans une requête complexe peut amener WMI à renvoyer le code d’erreur WBEM_E_QUOTA_VIOLATION comme valeur HRESULT. La limite des mots clés WQL dépend de la complexité de la requête.

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_SWbemServices
IID
IID_ISWbemServices

Voir aussi

SWbemServices

Appel d'une méthode

SWbemServices.Get