Export (0) Print
Expand All
2 out of 3 rated this helpful - Rate this topic

Accessing Interfaces Across Apartments

COM provides a way for any apartment in a process to get access to an interface implemented on an object in any other apartment in the process. This is done through the IGlobalInterfaceTable interface. This interface has three methods, which allow you to do the following:

  • Register an interface as a global (processwide) interface.
  • Get a pointer to that interface from any other apartment through a cookie.
  • Revoke the global registration of an interface.

The IGlobalInterfaceTable interface is an efficient way for a process to store an interface pointer in a memory location that can be accessed from multiple apartments within the process, such as process-wide variables and agile objects (free-threaded, marshaled objects) containing interface pointers to other objects.

An agile object is unaware of the underlying COM infrastructure in which it runs; in other words, what apartment, context, and thread it is executing on. The object may be holding on to interfaces that are specific to an apartment or context. For this reason, calling these interfaces from wherever the agile component is executing might not always work properly. The global interface table avoids this problem by guaranteeing that a valid proxy (or direct pointer) to the object is used, based on where the agile object is executing.

Note   The global interface table is not portable across process or machine boundaries, so it cannot be used in place of the normal parameter-passing mechanism.

For information about creating and using a global interface table, see the following topics:

Related topics

Choosing the Threading Model
Multithreaded Apartments
In-Process Server Threading Issues
Processes, Threads, and Apartments
Single-Threaded and Multithreaded Communication
Single-Threaded Apartments

 

 

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback

Community Additions

ADD
Show:
© 2014 Microsoft. All rights reserved.