Yeah -- everything I've read about the COM threading (particularly as a JNI participant) sounds kind of treacherous.

In my case, it's rather tricky to be able to call CoInitialize/Uninit at the front and back of a thread because of the nature of Java's garbage collector. I can call Initialize, for instance, when some top level class is created, but knowing when to call Uninitialize is rather tricky. Like you said, in my case, these methods are only being called by my Java wrapper, so I /think/ I can be reasonably confident that it's not already initialized. Is it OK to call multiple times as long as I know I'm the only one doing it and it's cleaning up properly each call?

ms