Partager via


IFunctionInstanceQuery ::Execute, méthode (functiondiscoveryapi.h)

[La découverte de fonctions peut être utilisée dans les systèmes d’exploitation spécifiés dans la section Configuration requise. Il peut être modifié ou indisponible dans les versions suivantes.]

Exécute la requête définie par IFunctionDiscovery ::CreateInstanceQuery.

Syntaxe

HRESULT Execute(
  [out] IFunctionInstance **ppIFunctionInstance
);

Paramètres

[out] ppIFunctionInstance

Pointeur vers un pointeur d’interface IFunctionInstance qui reçoit la fonction demandée instance.

Valeur retournée

Les valeurs de retour possibles incluent, sans s’y limiter, les éléments suivants.

Code/valeur de retour Description
S_OK
La commande s'est correctement terminée.
E_INVALIDARG
Le paramètre ppIFunctionInstance a la valeur NULL.
E_OUTOFMEMORY
La méthode ne peut pas allouer la mémoire nécessaire pour effectuer cette opération.
E_PENDING
Les résultats à retourner par un fournisseur passent par une notification asynchrone.
HRESULT_FROM_WIN32(ERROR_OBJECT_NOT_FOUND)
0x800710d8
La fonction instance représentée par l’ID spécifié n’existe pas sur cet ordinateur.
HRESULT_FROM_WIN32(ERROR_KEY_DELETED)
0x800703fa
La fonction instance n’a pas pu être retournée, car la clé correspondant à la fonction instance a été supprimée par un autre processus. Cette erreur est retournée par le fournisseur de Registre si une clé est supprimée pendant le traitement des requêtes.
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
0x80070002
La fonction instance n’a pas pu être retournée, car la clé correspondant à la fonction instance est introuvable. Cette erreur est retournée par le fournisseur de Registre lorsque le fournisseur n’a pas trouvé d’instances correspondantes pour une requête instance.
 

Une requête prédéfinie est une requête d’une catégorie en couches. Lorsqu’une requête prédéfinie est exécutée, chaque fournisseur qui retourne une fonction instance retourne également une valeur HRESULT. Les valeurs HRESULT du fournisseur sont agrégées et la valeur retournée par la méthode Execute reflète ces résultats d’agrégation. Les résultats sont agrégés comme suit :

  • Si tous les fournisseurs retournent S_OK, l’exécution retourne S_OK.
  • Si au moins un fournisseur retourne E_PENDING et que tous les autres fournisseurs retournent S_OK ou E_PENDING, Exécuter retourne E_PENDING.
  • Si tous les fournisseurs retournent une valeur d’erreur (autrement dit, une valeur autre que S_OK ou E_PENDING), Execute retourne la valeur d’erreur retournée par le fournisseur réseau qui a été interrogé pour la dernière fois. En outre, si la routine de rappel IFunctionDiscoveryNotification du client a été fournie à IFunctionDiscovery ::CreateInstanceCollectionQuery, une notification OnError est envoyée pour chaque fournisseur. Chaque notification OnError contient le HRESULT retourné par le fournisseur.
  • Si au moins un fournisseur retourne une valeur d’erreur et que tous les autres fournisseurs retournent S_OK, Execute retourne S_OK. Les notifications OnError sont envoyées comme décrit ci-dessus.
  • Si au moins un fournisseur retourne une valeur d’erreur et qu’au moins un fournisseur retourne E_PENDING, Execute retourne E_PENDING. Les notifications OnError sont envoyées comme décrit ci-dessus.

Remarques

Cette méthode doit être appelée par le programme client pour récupérer des données à partir de l’objet de requête. Lorsqu’elle est appelée, cette méthode effectue les opérations suivantes :

  1. Récupère le instance de fonction.
  2. Lance le mécanisme de notification de mise à jour si l’adresse de la routine de rappel IFunctionDiscoveryNotification du programme client est fournie à IFunctionDiscovery ::CreateInstanceQuery.
Les fournisseurs réseau de découverte de fonctions retournent uniquement des instances de fonction via l’interface IFunctionDiscoveryNotification . Ils ne retournent aucune instance de fonction directement lorsque cette méthode est appelée. Au lieu de cela, Execute lance simplement une opération de récupération entièrement asynchrone et retourne E_PENDING pour indiquer que les résultats seront retournés de manière asynchrone. Les notifications doivent être utilisées pour récupérer des instances de fonction à partir de fournisseurs réseau de découverte de fonctions.

Si Execute est appelé deux fois sur le même objet de requête, la première requête est terminée avant l’exécution de la deuxième requête.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête functiondiscoveryapi.h
DLL FunDisc.dll

Voir aussi

Requêtes de découverte de fonction

IFunctionInstanceQuery