VMwareの仮想シリアルポート

VMware上のWindowsカーネルデバッグしたい場合、named pipeでWinDbgから接続できるわけだが、

  • 休止状態にするとWinDbgとの接続が切断され、復帰時に接続が復活できない(休止状態のデバッグができない)
  • 仮想マシンをpower offにするたびにWinDbgも再起動する必要がある

というのが若干手間。そんなわけで「Windows XP フィルタドライバプログラミング」にあるシリアルポート直接出力の方がお手軽だったりする。

power off後にアプリを終了しないといけないのは仮想マシン側がサーバになっている(のにアプリのWinDbgが切断してくれない)ためなので、アプリをnamed pipeのサーバにすればいちいちデバッグアプリを再起動しなくてすむ。
named pipeからTCPへのproxyが公開されている(VMWare Serial Line Gateway)ので、これをちょっと改造してダンプだけするアプリを書いてみた。
なぜか8bit目の出力が化けることがあるようで、シリアルポートの設定を変えると出なくなったりするのだが、通信速度が遅ければ問題ないわけでもなさそう。

Windows XP フィルタドライバプログラミング」が絶版になっていた。この本はAmazonのレビューにもあるが、単独で入門書になるものではないが基本を理解した上での副読本の一つとしてはいいと思う。