Enables any apartment in a process to get access to an interface implemented on an object in any other apartment in the process.
The IGlobalInterfaceTable interface has these methods.
|IGlobalInterfaceTable::GetInterfaceFromGlobal||Retrieves a pointer to an interface on an object that is usable by the calling apartment. This interface must be currently registered in the global interface table.|
|IGlobalInterfaceTable::RegisterInterfaceInGlobal||Registers the specified interface on an object residing in one apartment of a process as a global interface, enabling other apartments access to that interface.|
|IGlobalInterfaceTable::RevokeInterfaceFromGlobal||Revokes the registration of an interface in the global interface table.|
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 processwide variables and agile (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 may 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.
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.
|Minimum supported client||Windows 2000 Professional [desktop apps | UWP apps]|
|Minimum supported server||Windows 2000 Server [desktop apps | UWP apps]|