プロセス実行時間測定 その3

プロセスを起動したら、プロセスハンドルから起動時間を取得します。

FILETIMEというのはよくわからんのだけど、winbase.hによると64bitの変数で

typedef struct _FILETIME {
        DWORD dwLowDateTime;
        DWORD dwHighDateTime;
} FILETIME,*PFILETIME,*LPFILETIME;

こんな感じに、上位32bit+下位32bitという構成になってる。どうして64bit型にしないかは分からんが、多分32bit onlyな処理系を想定してるのでしょう。多分。で、これには何が入ってるかと言うと

1601年1月1日から100ns間隔での経過時間らしい。・・・うーん、いわゆるエポック秒は出せないのか?って思ってしまう俺はUNIXの人なんだろうなあ。

こちらのサイトでFILETIME -> time_tの変換をやってました。正確にはSYSTEMTIME -> time_tだったので、ちょっと変更。

time_t FileTimeToTimet(LPFILETIME pft){
     return (time_t)(((*(const ULONGLONG *)pft) - 0x19DB1DED53E8000)/10000000);
}
キーワード「エポック秒」で

Perlなどで使われる」という意味不明な記述があったので直しました。