2010-10-21

Desktop Heap

スラド見てたら、デスクトップヒープの話があったんだけど、これといえば、こんなこといつも思い出すなぁと

-oオプション(どのプロセスがどのTCP/IPのセッションを利用しているかを表示するオプション)が使えるnetstatのWindows 2000版(XP版は-o使えるけど、2000版は使えないんだよ。その-oオプションを使うためにカーネルドライバをバイナリに隠して、それを動的ロードして、必要なメモリを読み込むという荒技をしてるツールだったはず)を作ってたIさんが、同じテクニックで必要な構造体のデータを読み込んでそれを計算すれば、大体のデスクトップヒープの使用量がわかるんじゃない?ってことに気付いて、同じようなツールのカーネルデバッガのエクステンションを作ってたNさん(or Mさん?)に相談。2日か3日くらいでコンソール版デスクトップヒープモニタを作りあげてた話を思い出す。結構裏では使われていた記憶が。

問題はWIN32K(だっけ?)のプライベートシンボルが必要なんでそれを外に出せなかった。今はそこら辺の解析の結果が、Desktop Heap Monitorにいかされてるんだけどね。今のパブリックシンボルにはそこらの情報をいれるようにしてもらっているから、プライベートシンボルが必要ということはないけど。

また、デスクトップヒープが枯渇した時くらい何かメッセージださんかいということで、バグファイルしてYさんに直してもらったんだけど、イベントログにちょっとしたメッセージ(気付くはずねーよ)出すしょぼいコード(確かWindows Server 2003以降だけだったと思う)があるだとか。

ちなみにいうと、64-bit OS上で32-bitプロセスを実行した場合は、それはWOWによって、64-bitコールに変更されるため、64-bit OSを使っている場合にはこの心配は無用。

今思うと結構昔の話だなぁ。っていうか年取った。

0 件のコメント: