I know that if an STA thread creates an in-process COM object whose threading model is Free, the object will be created in the client's MTA, and the creating STA thread will access the object via a marshalled interface pointer. I am clear on this. However, I am not sure what happens if the client is a VB COM object, since I know that VB does not support MTAs? Where will the free-threaded object be created - does COM create the object in an STA instead? If so, is it the same or a different STA than the VB client component?

What happens if the free-threaded component is created by a C++ client in an MTA, and then the interface pointer is passed to the VB COM object - does the VB COM object create a proxy object in an STA, or can it access objects already created in an MTA? Please help ....