Méthode IMultiQI ::QueryMultipleInterfaces (objidl.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 multithreads et les environnements distribués, il est essentiel de maintenir au minimum les appels RPC pour des performances optimales.
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 IID d’interface et contient deux membres supplémentaires pour recevoir un pointeur d’interface et 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 du serveur, la méthode génère un proxy d’interface correspondant et retourne son pointeur avec des pointeurs vers les interfaces qu’elle implémente déjà.
Remarques 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 ensuite 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.Lors du 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, des pointeurs ont été retournés pour toutes les interfaces demandées.
Si la valeur de retour est E_NOINTERFACE, les pointeurs 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 quelles interfaces 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. Par la suite, si une requête QueryInterface 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 chargé de libérer 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 | objidl.h (inclure ObjIdl.h) |