この日記はGNSで生成しています。 |
_ 数ヶ月前からずっとハマっていた問題が、CoInitialize()が原因と判明。
_ 具体的には、IShellFolder->EnumObjects()をVistaでネットワークフォルダに対して実行するとフリーズして帰って来なくなる。
_ 判明したのはSHBrowseForFolder()の挙動。WinMain()とスレッド先頭でCoInitialize()してあれば十分だろうと思っていたら、同様にメインプロセスのDllMain()ででCoInitialize()したままのDLLをリンクしたあとでSHBrowseForFolder()でネットワークフォルダを開くとVistaだけフリーズするという。
_ 試行錯誤の結果、CoInitialize()〜CoUninitialize()をわりと小さい範囲で使うようにすることで解決したっぽい。COMの都合ってのはわからんでもないが、もう少しちゃんとドキュメントしてもらえないもんだろうか。
メールはこちらへ...[後藤浩昭 / Hiroaki GOTO / GORRY / gorry@hauN.org]