DLL をロードしたシステム全体のフックがアンロードされたときに、すべてのプロセスから DLL を適切にアンロードするにはどうすればよいですか?
MSDNから:
UnhookWindowsHookEx を使用してグローバル フック プロシージャを解放できますが、この関数はフック プロシージャを含む DLL を解放しません。これは、デスクトップ内のすべてのアプリケーションのプロセス コンテキストでグローバル フック プロシージャが呼び出され、それらのすべてのプロセスに対して LoadLibrary 関数が暗黙的に呼び出されるためです。別のプロセスに対して FreeLibrary 関数を呼び出すことはできないため、DLL を解放する方法はありません。DLL に明示的にリンクされたすべてのプロセスが終了するか、FreeLibrary を呼び出し、フック プロシージャを呼び出したすべてのプロセスが DLL の外部で処理を再開した後、システムは最終的に DLL を解放します。
だから私が探しているのは、フックがフックされていないことを検出し、フックFreeLibrary
されたすべてのプロセスから呼び出す方法です。フックがアンロードされたときに DLL を即座にアンロードする他の方法はありますか?