You will need the message loop, when you marshal the interface pointer, and then unmarshal and use it in a different thread. This is because the proxy and stub communicate via windows messages.

If you dont marshal / unmarshal the interface pointer, it may or may not work across appartments - but you loose the synchronization which com provides for components in STAs.

Prosise has published 2 really nice articles on code guru, which should probably explain things clearly
http://www.codeguru.com/Cpp/COM-Tech...cle.php/c5529/
and
http://www.codeguru.com/Cpp/COM-Tech...cle.php/c5533/