メインスレッド以外のスレッドで IXMLDOMDocumentPtr::CreateInstance を呼び出すと失敗してしまうのですが、マルチスレッドで COM(MSXML?) を使う上で何かやらなきゃいけないことなどがあるのでしょうか?
検索してもいまひとつ見つからない……。思いつきでスレッド作成時にそのスレッド内で Coinitialize 呼んだら動いてしまったけれど、これで良いのかも謎。
……と、書きながら検索していたら次のようなページを発見。
- COMを利用するスレッド毎に呼び出さなければならない
- CoUninitialize関数と対に呼び出さなければならない
どうやら合っていたようです。これで安心して先に進めます。というか、大元の Windows SDK のヘルプを見たほうが早いんじゃないかとも思いますが、検索してもヒットしなかったのですっ飛ばしてます。手元にほしいなぁ、 MSDN ……。