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 |
---|---|
|
La méthode a récupéré des pointeurs vers toutes les interfaces demandées. |
|
La méthode a récupéré des pointeurs vers certaines interfaces demandées, mais pas toutes. |
|
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) |