Multithreaded COM/OLE Components

With the availability of 32-bit operating systems such as Windows NT and Windows 95, there is the question of multithreaded code that uses COM and OLE. In 32-bit OLE as shipped with Windows NT 3.5 for x86 processors, everything that you do with OLE must be done from the same thread that called CoInitialize or OleInitialize. This restriction is not absolute, however, as you can use in-process objects and their interfaces if you specifically know those interfaces are thread safe. Because Microsoft doesn't guarantee this with Windows NT 3.5 (x86) for any of its interfaces, it applies only to your own custom interfaces on this platform.

Starting with Windows 95 and Windows NT 3.51, you can use OLE from multiple threads. At the time of writing, final information about the threading model was not yet available. Check the OLE Programmer's Reference for a full discussion of multithreaded OLE.