Win32OLEのこと1.9でのクロススレッディングイシューだが、IGlobalInterfaceTable使えば簡単だなぁと思ってパッチを作ってみた(結構でかい。IGlobalInterfaceTable無しの環境を半分だけサポートしているので中途半端(RELEASE時にもチェックが必要)なのは、以下の理由から仕上げに入っていないからだ)が、最後にオブジェクトをリリースできない。Revokeを呼び出さない限りどうにもならないからだ。言え、いちいちole_freeの呼び出しが必要というのもよろしくはない。結局、あのてのクリーンアップが必要なオブジェクトを操作するAPIは、RAIIにしておけということだなぁ。Releaseが勝手に呼ばれるとなっていたら、簡単だったね。それ以外の利用方法なら、明示的にfreeを呼び出すことに決める。IOにブロックを渡すか、さもなければcloseを呼ばせるか、と同じことだ。無効なままだとEXCELが居残る。