FILETIME类型到LARGE_INTEGER类型的转换
来源:互联网 发布:mac ps2017怎么破解 编辑:程序博客网 时间:2024/06/15 10:06
核心编程第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);
书上说到
虽然FILETIME 结构和LARGE_INTEGER结构具有完全相同的二进制格式,但是这两个结构的对齐方式是不同的。所有FILETIME结构的地址必须对齐到32位边界(即地址是4的整数倍),而所有LARGE_INTEGER结构的地址则必须对齐到64位边界(即地址是8的整数倍)。调用SetWaitableTimer并传入FILETIME结构是否能够正常工作,取决于FILETIME结构是否正好在64位边界上。但是,编译器会确保LARGE_INTEGER结构的地址始终都在64位边界上,因此正确的做法(任何时候都能够正常工作的做法)是先把FILETIME的成员复制到LARGE_INTEGER的成员中,然后再把LARGE_INTEGER的地址传给SetWaitableTimer。
0 0
- FILETIME类型到LARGE_INTEGER类型的转换
- FILETIME类型的变量转换为CString
- LARGE_INTEGER类型 和 QueryPerformanceFrequency()
- LARGE_INTEGER类型 和 QueryPerformanceFrequency()
- LARGE_INTEGER类型 和 QueryPerformanceFrequency()
- LARGE_INTEGER类型 和 QueryPerformanceFrequency()
- LARGE_INTEGER类型 和 QueryPerformanceFrequency() (转)
- 【转】[C++]LARGE_INTEGER 类型使用
- 【VC++类型转换】CString类型到Char[]类型的转换
- FILETIME 、SYSTEMTIME的转换
- LARGE_INTEGER类型和LONGLONG类型以及QueryPerformanceFrequency函数
- 2 从字符串到日期类型(Date类型)的转换
- 从可空类型到基础类型的转换
- java中 BigDecimal类型的可以转换到double类型
- MySQL字段类型到JAVA类型的对应及转换
- char * 到CcomBSTR类型的转换
- 字符串到日期类型的转换
- 从int 到string类型的转换
- 一段挂起进程中所有线程的代码
- GetThreadTimes获取其它线程cpu时间
- 如何输出高精度时间差
- 注意!GetThreadPriority的返回值不是系统的优先级值
- windows核心编程 第8章201页旋转锁的代码在新版Visual Studio运行问题
- FILETIME类型到LARGE_INTEGER类型的转换
- windows如何利用计划任务自动关机?
- visual c++.net 技术内幕 第6版 附带的程序如何在vs2013中编译成功
- c#学习路线应该靠谱
- postgresql 常用命令
- Android实现GPS定位功能
- Linux下Tomcat日志定期清理
- 一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(13)--修改任务表单
- PPT, Excel, Visio转eps,插入Latex小记