ブラウザプラグインのデバッグ

SqueakOCX2をVisualStudio上でデバッグすることで、発生している問題を正確に把握できました。

デバッグ作業上の注意

  • UAC(ユーザアカウント制御)がONの場合、たとえ管理者ユーザでログオンしている場合でも、ActiveXをregsvr32で登録することはできない。普通VisualStudioではビルドの作業の中で自動的にActiveXを登録してくれるのですが、これが失敗します。一番簡単な回避策は、コントロールパネル(クラシック表示)の「ユーザアカウント」で、UACをOFFにすることですが、この時再起動が必要。ActiveX登録用の簡単なユーティリティを作るのがよいと思われます。
  • UACがOFFの場合、IEの保護モードは無効になり、問題が再現しなくなる。結局、UACをONに戻すことが必要。(このときまた再起動)
  • VisualStudio2005自体、Vista上での動作には既知の問題があり素直に立ち上がらない。たぶん回避策があるが、後で調べる。

発生している問題

いずれも SqueakPluginRun() の中の問題です。

  • Squeak.exeのプロセスを起動した後、DuplicateHandle()で名前つきパイプのハンドルをsqueak.exeプロセス用に複製しようとして、エラーコード=5(権限がない)でエラーになる。
  • 複製したハンドルを PostThreadMessage()で squeak.exeプロセスに送信しようとして、やはり権限がないというエラーになる、

また保護モードOFFでこれらの処理が成功していることも確認できました。