Partager via


Méthode IMultiQI ::QueryMultipleInterfaces (objidlbase.h)

Récupère les pointeurs vers plusieurs interfaces prises en charge sur un objet.

L’appel de cette méthode équivaut à émettre une série d’appels QueryInterface distincts, sauf que vous n’encourez pas la surcharge d’un nombre correspondant d’appels RPC. Dans les applications multithread et les environnements distribués, il est essentiel de maintenir au minimum les appels RPC pour optimiser les performances.

Syntaxe

HRESULT QueryMultipleInterfaces(
  [in]      ULONG    cMQIs,
  [in, out] MULTI_QI *pMQIs
);

Paramètres

[in] cMQIs

Nombre d’éléments dans le tableau pMQIs .

[in, out] pMQIs

Tableau de structures MULTI_QI . Pour plus d'informations, consultez la section Notes.

Valeur retournée

Cette méthode peut retourner les valeurs suivantes.

Code de retour Description
S_OK
La méthode a récupéré des pointeurs vers toutes les interfaces demandées.
S_FALSE
La méthode a récupéré des pointeurs vers certaines interfaces demandées, mais pas toutes.
E_NOINTERFACE
La méthode a récupéré des pointeurs vers aucune des interfaces demandées.

Remarques

La méthode QueryMultipleInterfaces prend comme entrée un tableau de structures MULTI_QI . Chaque structure spécifie un ID d’interface et contient deux membres supplémentaires pour la réception d’un pointeur d’interface et d’une valeur de retour.

Cette méthode obtient autant de pointeurs d’interface demandés que possible directement à partir du proxy d’objet. Pour chaque interface non implémentée sur le proxy, la méthode appelle le serveur pour obtenir un pointeur. Lors de la réception d’un pointeur d’interface à partir du serveur, la méthode génère un proxy d’interface correspondant et retourne son pointeur ainsi que des pointeurs vers les interfaces qu’elle implémente déjà.

Notes aux appelants

Un appelant doit commencer par interroger le proxy d’objet pour l’interface IMultiQI . Si le proxy d’objet retourne un pointeur vers cette interface, l’appelant doit alors créer une structure MULTI_QI pour chaque interface qu’il souhaite obtenir. Chaque structure doit spécifier un IID d’interface et définir son membre pItf sur NULL. Si vous ne définissez pas le membre pItf sur NULL , le proxy d’objet ignore la structure.

En retour, QueryMultipleInterfaces écrit le pointeur d’interface demandé et une valeur de retour dans chaque structure MULTI_QI dans le tableau du client. Le membre pItf reçoit le pointeur ; le membre hr reçoit la valeur de retour.

Si la valeur retournée par un appel à QueryMultipleInterfaces est S_OK, les pointeurs ont été retournés pour toutes les interfaces demandées.

Si la valeur de retour est E_NOINTERFACE, les pointeurs n’ont été retournés pour aucune des interfaces demandées. Si la valeur de retour est S_FALSE, les pointeurs vers une ou plusieurs interfaces demandées n’ont pas été retournés. Dans ce cas, le client doit case activée le membre hr de chaque structure MULTI_QI pour déterminer les interfaces qui ont été acquises et celles qui ne l’ont pas été.

Si un client sait à l’avance qu’il utilisera plusieurs interfaces d’un objet, il peut appeler QueryMultipleInterfaces à l’avance et, plus tard, si une requêteInterface est effectuée pour l’une des interfaces déjà acquises via QueryMultipleInterfaces, aucun appel RPC n’est nécessaire.

Au retour, l’appelant doit case activée le membre hr de chaque structure MULTI_QI pour déterminer quels pointeurs d’interface ont été et n’ont pas été retournés.

Le client est responsable de la libération de chacune des interfaces acquises en appelant Release.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête objidlbase.h (inclure ObjIdl.h)

Voir aussi

IMultiQI