2007年12月27日

ふと、思ったのですが・・・

昔、人間で河豚を初めて食べた人って、多分お亡くなりになったでしょう。それでも、後に続こうとした人達がいてくれたおかげで自分達は、今河豚を食べることができるんだなあ猫
posted by 台北猫々 at 22:49| Comment(0) | TrackBack(0) | 日記

Windows版のgettimeofday関数です。

一応ミリ秒がとれます。まあ、タイマ分解能はOSに依存しちゃいますがね。

#include <windows.h>
#include <time.h>

struct timezone {
int tz_minuteswest;
int tz_dsttime;
};

#define EPOCHFILETIME (116444736000000000i64)

int gettimeofday(struct timeval *tv, struct timezone *tz)
{
FILETIME tagFileTime;
LARGE_INTEGER largeInt;
__int64 val64;
static int tzflag;

if (tv)
{
GetSystemTimeAsFileTime(&tagFileTime);

largeInt.LowPart = tagFileTime.dwLowDateTime;
largeInt.HighPart = tagFileTime.dwHighDateTime;
val64 = largeInt.QuadPart;
val64 = val64 - EPOCHFILETIME;
val64 = val64 / 10;
tv->tv_sec = (long)(val64 / 1000000);
tv->tv_usec = (long)(val64 % 1000000);
}

if (tz)
{
if (!tzflag)
{
_tzset();
tzflag++;
}

//Visual C++ 6.0でOKだった・・
//tz->tz_minuteswest = _timezone / 60;
//tz->tz_dsttime = _daylight;

long _Timezone = 0;
_get_timezone(&_Timezone);
tz->tz_minuteswest = _Timezone / 60;

int _Daylight = 0;
_get_daylight(&_Daylight);
tz->tz_dsttime = _Daylight;
}

return 0;
}



↓で構築したVisualC++ 2005 Express Editionで動作確認しました。
http://winter-tail.sakura.ne.jp/nmap/setup.html

良かったらクリックお願いします→banner_01.gif
posted by 台北猫々 at 21:07| Comment(0) | TrackBack(1) | 技術メモ(Windows C/C++)