Win32 APIで「GetTickCount」が用意されています。
DWORD型にミリ秒単位で返って来ます。
MSDNでも解説されていますが約49.7日で0に戻ります。
まー、DWORDって事は、0xFFFFFFFFFF(msec)=4294967295(msec)≒49.7(days)なので
当たり前といえば当たり前ですね。
その昔、49.7日で固まるってのがありましたが懐かしく思えてしまいましたよ。
0に戻ってしまったときの処理がうまく出来てなかったようですね。
OS側にも問題はあったようですが、ドライバ関係では手抜きというか
Win9x系のOSをそんなにも長く連続稼動させるなんて考えてなかった
のかもしれませんね。
さてサンプルです。
#include <windows.h>
#include <stdio.h>
int main()
{
#include <stdio.h>
int main()
{
DWORD time;
int day,hour,minute,second,m_second;
time = GetTickCount();
printf("TickCount:%d,0x%x\n",time,time);
m_second = time % 1000;
second = (int)(time / 1000);
minute = (int)(second / 60);
second %= 60;
hour = (int)(minute / 60);
minute %= 60;
day = (int)(hour / 24);
hour %= 24;
printf("起動後:%ddays %d:%d:%d'%d\n",day,hour,minute,second,m_second);
}int day,hour,minute,second,m_second;
time = GetTickCount();
printf("TickCount:%d,0x%x\n",time,time);
m_second = time % 1000;
second = (int)(time / 1000);
minute = (int)(second / 60);
second %= 60;
hour = (int)(minute / 60);
minute %= 60;
day = (int)(hour / 24);
hour %= 24;
printf("起動後:%ddays %d:%d:%d'%d\n",day,hour,minute,second,m_second);
コメント