核心编程第5版 245页到247页的讲到SetWaitableTimer函数的使用

其中提到 FILETIME类型到LARGE_INTEGER类型的转换问题,如下代码

	//我们声明的局部变量
HANDLE hTimer;
SYSTEMTIME st;
FILETIME ftLocal, ftUTC;
LARGE_INTEGER liUTC; //创建自动重置计时器
hTimer = CreateWaitableTimer(NULL,FALSE,NULL); //第一次触发时间是在2008年1月1日,在下午1:00(当地时间)。
st.wYear = 2008; //年
st.wMonth = 1; //1月
st.wDayOfWeek = 0; //忽略
st.wDay = 1; //1日
st.wHour = 13; //下午1点
st.wMinute = 0; //一个小时的第0分
st.wSecond = 0; //一个分钟的第0秒
st.wMilliseconds = 0; //一秒的第0毫秒 SystemTimeToFileTime(&st, &ftLocal); //将本地时间转换为UTC时间
LocalFileTimeToFileTime(&ftLocal, &ftUTC); //转换 FILETIME类型 为 LARGE_INTEGER类型 因为这2个类型的对齐方式不同
liUTC.LowPart = ftUTC.dwLowDateTime;
liUTC.HighPart = ftUTC.dwHighDateTime; //设置时间
SetWaitableTimer(hTimer, &liUTC, 6 * 60 * 60 * 1000,
NULL, NULL, FALSE);

书上说到

04-27 05:59
查看更多