プロセスの履歴をとる

すべてのプロセスの開始時間と終了時間を記録します。作業時間の把握とかに使えるかもしれませんね。勢いだけで書いたので人柱ですが、それでもよければどうぞー(process_history.cab)。


アーカイブはドライバと実行可能ファイルで構成されています。ドライバをロードする機能は提供されていないので ldsys あたりを利用してください。

ドライバがロードされている期間に生成されたプロセスのみが対象です。したがってWindows起動後に読み込ませた場合、それ以前のプロセス情報は管理されません。Windowsを再起動すると、すべてのプロセス情報が管理されるようになります。

実行可能ファイルをビルドするには boost が必要です。ドライバを VisualStudio からビルドするには DDKBUILD.CMD が必要です。

出力

>process_history.exe
No   ImageName             ProcessId       ParentId     CreateTime  TerminateTime
   0 System                        4              0           1207              0 *1
   1 smss.exe                    496              4           1215              0 *2
   2 autochk.exe                 504            496           1218           1219
   3 smss.exe                    552            496           1370           1615
   4 csrss.exe                   564            552           1374              0
   ...
ImageName
ファイル名を16文字で示します。
ProcessId
プロセスIDです。
ParentId
本プロセスを生成したプロセスのIDです。
CreateTime
プロセスが生成された時間を、システムが起動してからの経過時間[ms]で示します。
TerminateTime
プロセスが破棄された時間を、システムが起動してからの経過時間[ms]で示します。
*1
System の CreateTime が0ではないのは、ドライバファイルのロードがWindowsの起動直後ではなく 1207ms 後であったためです。
*2
TerminateTime が 0 になっているプロセスはまだ終了していないものです。
>process_history.exe -c
No,ImageName,ProcessId,ParentId,CreateTime,TerminateTime
0,System,4,0,1207,0
1,smss.exe,496,4,1215,0
2,autochk.exe,504,496,1218,1219
3,smss.exe,552,496,1370,1615
4,csrss.exe,564,552,1374,0
...

実行可能ファイルは -c 引数を与えて起動するとCSV形式で出力します。excelなどに食わせてあげると、こんな感じでグラフにすることができます。