Global Interface Table (GIT)
The global interface table (GIT) is a process-wide object where you can register interfaces that live in different apartments. Some of them may aggregate the free-threaded marshaler and some may not, it’s all good. The GIT handles the marshaling correctly in both cases.
Instead of calling CoMarshalInterThreadInterfaceInStream and CoGetInterfaceAndReleaseStream, it’s usually simpler and less error-prone to register/unregister the objects in the GIT. You access it over the IGlobalInterfaceTable interface, which is provided by the system.