質問: Windows10 64-bitでメッセージをフックするプログラムを書いています。 ただ、フックして、その後フックを解除しても、DLLがロックされて消せなくなる症状が発生します(32bit・64bitの両方で)。DLLの内部でFreeLibraryを呼ぼうとしても失敗します。 MessageSpyAppが実際のアプリのEXEです。 SpyAgentは、メッセージの伝達を名前付きパイプで仲介するプログラムです。 SpyBondがAPIフックして、SpyAgentにメッセージを伝達するDLLです。 フックを解除したら、すぐにDLLが消せるような、お行儀の良いプログラムを作りたいと思います。 よろしくお願いします。
回答: 名前付きの継承可能な終了待ちのイベントオブジェクトをDLLで継承して、DLLで作成した別スレッドでイベントオブジェクトを待機し、別スレッドからFreeLibraryAndExitThreadでDLLを解放すると上手く解放された。