Partager via


ExecNotificationQueryWmi, fonction

Exécute une requête pour recevoir des événements. L’appel est immédiatement renvoyé, et l’appelant peut interroger l’énumérateur renvoyé pour recevoir les événements à mesure qu’ils arrivent. La libération de l’énumérateur renvoyé annule la requête.

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 ExecNotificationQueryWmi (
   [in] BSTR                    strQueryLanguage,
   [in] BSTR                    strQuery,
   [in] long                    lFlags,
   [in] IWbemContext*           pCtx,
   [out] IEnumWbemClassObject** ppEnum,
   [in] DWORD                   authLevel,
   [in] DWORD                   impLevel,
   [in] IWbemServices*          pCurrentNamespace,
   [in] BSTR                    strUser,
   [in] BSTR                    strPassword,
   [in] BSTR                    strAuthority
);

Paramètres

strQueryLanguage
[in] Chaîne indiquant le langage de requête valide pris en charge par Windows Management. Il doit s’agir de « WQL », l’acronyme de WMI Query Language.

strQuery
[in] Texte de la requête. Ce paramètre ne peut pas être null.

lFlags
[in] Combinaison des deux indicateurs suivants qui affectent le comportement de cette fonction. Ces valeurs 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_RETURN_IMMEDIATELY 0x10 L’indicateur provoque un appel semi-synchrone. Si cet indicateur n’est pas défini, l’appel échoue. En effet, les événements sont reçus en continu, ce qui signifie que l’utilisateur doit interroger l’énumérateur renvoyé. Et le blocage indéfini de cet appel rend cela impossible.
WBEM_FLAG_FORWARD_ONLY 0x20 La fonction renvoie un énumérateur de type avant uniquement. En règle générale, les énumérateurs de ce type sont plus rapides et utilisent moins de mémoire que les énumérateurs conventionnels, mais ils ne permettent pas les appels à Clone.

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 événements demandés.

ppEnum
[out] Si aucune erreur ne se produit, reçoit le pointeur vers l’énumérateur qui permet à l’appelant de récupérer les instances dans le jeu de résultats de la requête. Pour plus d’informations, consultez la section Remarques.

authLevel
[in] Niveau d’autorisation.

impLevel
[in] Niveau d’emprunt d’identité.

pCurrentNamespace
[in] Pointeur vers un objet IWbemServices qui représente l’espace de noms actuel.

strUser
[in] Nom d’utilisateur. Pour plus d’informations, reportez-vous à la fonction ConnectServerWmi.

strPassword
[in] Mot de passe. Pour plus d’informations, reportez-vous à la fonction ConnectServerWmi.

strAuthority
[in] Nom de domaine de l’utilisateur. Pour plus d’informations, reportez-vous à la fonction ConnectServerWmi.

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’est pas autorisé à afficher une ou plusieurs des classes que la fonction peut renvoyer.
WBEM_E_FAILED 0x80041001 Une erreur inconnue s’est produite.
WBEM_E_INVALID_PARAMETER 0x80041008 Un paramètre n'est pas valide.
WBEM_E_INVALID_CLASS 0x80041010 La requête spécifie une classe qui n’existe pas.
WBEMESS_E_REGISTRATION_TOO_PRECISE 0x80042002 Une trop grande précision a été demandée en termes de livraison des événements. Une plus grande tolérance d’interrogation doit être spécifiée.
WBEMESS_E_REGISTRATION_TOO_BROAD 0x80042001 La requête demande plus d’informations que Windows Management ne peut fournir. Ce HRESULT est renvoyé lorsqu’une requête d’événement aboutit à une demande d’interrogation de tous les objets d’un espace de noms.
WBEM_E_INVALID_QUERY 0x80041017 La requête comportait une erreur de syntaxe.
WBEM_E_INVALID_QUERY_TYPE 0x80041018 Le langage de la requête demandé n'est pas pris en charge.
WBEM_E_QUOTA_VIOLATION 0x8004106c La requête est trop complexe.
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 La liaison de l’appel de procédure distante (RPC) entre le processus actuel et WMI a échoué.
WBEM_E_UNPARSABLE_QUERY 0x80041058 Impossible d’analyser la requête.
WBEM_S_NO_ERROR 0 L’appel de fonction a abouti.

Notes

Cette fonction encapsule un appel à la méthode IWbemServices::ExecNotificationQuery.

Une fois la fonction renvoyée, l’appelant transmet périodiquement l’objet ppEnum renvoyé à la fonction Next pour voir si des événements sont disponibles.

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 (ou 0x8004106c) comme valeur HRESULT. La limite des mots clés WQL dépend de la complexité de la requête.

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