UnhookWindowsHookEx を呼んでもファイルが掴まれた状態になっている – プログラミング – Home

通知
すべてクリア

UnhookWindowsHookEx を呼んでもファイルが掴まれた状態になっている


照瑛
 照瑛
(@照瑛)
ゲスト
結合: 16年前
投稿: 1
Topic starter  

グローバルフックを使っていて、終了時にUnhookWindowsHookExを
呼んでいるのですが、呼んだにもかかわらず、
フック用のDLLが掴まれた状態になっています。

掴むのをやめさせるためには、どうしたらよいのでしょうか?

開発環境は visual studio.net2003 になります。


引用解決済
トピックタグ
かもねぎ
 かもねぎ
(@かもねぎ)
ゲスト
結合: 17年前
投稿: 61
 

これだけの情報ではわかりませんが・・
HHOOK hHook ;
ではなくて
static HHOOK hHook ;
としていますか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

UnhookWindowsHookEx を呼んだからと言って、すぐに開放される保証はないでしょう。
MSDN に書いてありませんし。
というかむしろ、

> UnhookWindowsHookEx 関数が制御を返した後も、フックプロシージャが
> ほかのスレッドから呼び出される状態になっていることがあります。

とさえ書いてありますね。

SetWindowsHookEx は、一般的にはフック DLL の中から呼びますが、アプリ側で明示的
に LoadLibrary したハンドルを SetWindowsHookEx に渡して、フック解除した後で
FreeLibrary してやれば開放できるかもしれません(フックハンドルをどうやって DLL
側に渡すかという課題はありますが)。
ただ、注釈にあるように、フック解除後も他のスレッドがフックプロシージャを実行して
いるとすると、強制的にアンロードするのは危険かもしれませんね。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました