DllMain() 内での SendMessageTimeout() の使用で問題の起こるケース
お知らせありがとうございます。
YAMY はユーザーモードフックに置き換えた際に EXE-DLL 間の notify を原則メールスロット経由に変更しました。例外として(保護モードのIEのような)低整合性レベルのアプリの場合だけは SendMessageTimeout() を使っています。これは低整合性レベルアプリが書き込めるようにメールスロットのアクセス制御を設定しようとしても上手くいかなかったためです。
この問題自体は以前の記事 http://d.hatena.ne.jp/NyaRuRu/20051229/p1 を拝見して知っていたため、低整合性レベルアプリの場合は Notify::Type_threadDetach を投げないようにしています。このため DllMain から SendMessageTimeout() を呼びだすことはなくなっているはずです。ただし、それと引き換えに「低整合性レベルアプリのデタッチが行われない」という問題が生じており、こちらはまだ解決できていません。
オリジナルの窓使いの憂鬱からのバグなので申し訳ないのですが、 DllMain() 内での SendMessageTimeout() の使用で問題の起こるケースがあるようです。 詳しくは以下のリンクをご覧ください。