Accès aux interfaces à travers les Apartments
COM permet à n’importe quel cloisonnement d’un processus d’obtenir l’accès à une interface implémentée sur un objet dans n’importe quel autre cloisonnement du processus. Cette opération s’effectue par le biais de l’interface IGlobalInterfaceTable . Cette interface a trois méthodes, qui vous permettent d’effectuer les opérations suivantes :
- Inscrire une interface en tant qu’interface globale (échelle).
- Obtient un pointeur vers cette interface à partir de tout autre cloisonnement via un cookie.
- Révoque l’inscription globale d’une interface.
L’interface IGlobalInterfaceTable est un moyen efficace pour un processus de stocker un pointeur d’interface dans un emplacement de mémoire accessible à partir de plusieurs cloisonnements au sein du processus, tels que des variables à l’ensemble du processus et des objets agile (objets marshalés en thread) qui contiennent des pointeurs d’interface vers d’autres objets.
Un objet agile ne tient pas compte de l’infrastructure COM sous-jacente dans laquelle il s’exécute ; en d’autres termes, le cloisonnement, le contexte et le thread sur lequel il s’exécute. L’objet peut contenir des interfaces spécifiques à un cloisonnement ou à un contexte. Pour cette raison, l’appel de ces interfaces à partir de partout où le composant agile s’exécute peut ne pas toujours fonctionner correctement. La table d’interface globale évite ce problème en garantissant qu’un proxy (ou pointeur direct) valide pour l’objet est utilisé, en fonction de l’endroit où l’objet agile s’exécute.
Notes
La table d’interface globale n’étant pas portable au-delà des limites des processus ou des ordinateurs, elle ne peut pas être utilisée à la place du mécanisme de passage de paramètres normal.
Pour plus d’informations sur la création et l’utilisation d’une table d’interface globale, consultez les rubriques suivantes :