残念ながら、MSDN はそれについて十分に明確ではありません。グローバルフックを使用するプログラムを書いていますが、プログラムが異常終了した場合 (クラッシュ、ユーザーによる強制終了など) がどうなるか心配しています。
Windows は、プロセスの終了時に、プロセスによってインストールされたグローバル フックを自動的にアンフックしますか?
そうでない場合、別のプロセスで UnhookWindowsHookEx() を呼び出してフックを解放することは可能ですか? (インストーラープロセスが停止していることを検出した場合は、フックされたスレッドでこれを行うことを考えています。)
答えが「いいえ」または「いいえ」の場合、インストーラー プロセスが終了したときにグローバル フックをアクティブのままにしておくのは危険ではないでしょうか? この状況に対処する標準的な方法は何ですか?
UnhookWindowsHookEx() は他のプロセスにロードされた dll を解放しないことを MSDN で読みましたが、いつ dll が解放されるかはわかりません。CodeProject のこの記事は、最初のメッセージがフックされたスレッドに到着したときに dll が (それぞれのプロセスで) マップされていないことを示唆しているように思われるため、UnhookWindowsHookEx() 呼び出しの直後です。本当ですか?
ありがとうございました。