Windows内核编程基础篇之获取当前系统时间
来源:互联网 发布:淘宝怎查被隐形降权 编辑:程序博客网 时间:2024/04/29 20:17
我们通常对时间的理解包括了,年,月,日,时,分,秒 这些元素。当然,我们在做驱动开发,不能使用类似CTime 之类的函数。我们要是用与之对应的TIME_FIELDS,这个结构体中含有对应的时间要素。
给自己科普下,看看这个结构体:
ypedef struct _TIME_FIELDS{ SHORT Year; SHORT Month; SHORT Day; SHORT Hour; SHORT Minute; SHORT Second; SHORT Milliseconds; SHORT Weekday;} TIME_FIELDS, *PTIME_FIELDS;----------------------------接着说---------------------------------
我们使用函数KeQuerySystemTime() 获得系统当前时间。但是得到的并不是当地时间,还是,先看看函数原型:
VOID KeQuerySystemTime( _Out_ PLARGE_INTEGER CurrentTime);这个函数得到的是一个格林威治时间。我们可以调用函数ExSystemTimeToLocalTimne()转换成当地时间。再 看看这个 ExSystemTimeToLocalTimne()
函数的原型:
VOID ExSystemTimeToLocalTime( _In_ PLARGE_INTEGER SystemTime, _Out_ PLARGE_INTEGER LocalTime);上面的这2个函数使用的 “时间”都是长长整型数据结构。通过调用函数RtlTimeToFields()转换为TIME_FIELDS。而函数RtlTimeToFields()原型如下:
VOID RtlTimeToTimeFields( _In_ PLARGE_INTEGER Time, _Out_ PTIME_FIELDS TimeFields);------------------------ 代码区 ---------------------------------
下面的代码演示了获取到当前时间:年、月、日、时、分、秒。比如:2015-09-03 16-13-14。
void myGetTickCount(PULONG msec){LARGE_INTEGER tick_count;ULONG myInc = KeQueryTimeIncrement();KeQueryTickCount(&tick_count);tick_count.QuadPart *= myInc;tick_count.QuadPart /= 10000;*msec = tick_count.LowPart;}PWCHAR MyCurentTimeStr(){LARGE_INTEGER snow, now;TIME_FIELDS now_fields;static WCHAR time_str[32] = { 0 };//---获取标准时间KeQuerySystemTime(&snow);//---转换为当地时间ExSystemTimeToLocalTime(&snow, &now);//---整理出年,月,日,时,分,秒 这些元素RtlTimeToFields(&now, &now_fields);//---输出到字符串中RtlStringCchPrintfW(time_str,32*2,L"%4d-%2d-%2d %2d-%2d-%2d",now_fields.Year,now_fields.Month,now_fields.Day,now_fields.Hour,now_fields.Minute,now_fields.Second);//----return time_str;}静态变量time_str 使得该函数不具备多线程安全性。。。。
1 0
- Windows内核编程基础篇之获取当前系统时间
- Windows内核编程基础篇之获得当前滴答数
- Windows内核编程基础篇之系统线程
- linux内核获取当前系统时间
- 安卓编程之获取系统当前时间
- Windows获取当前系统时间函数总结
- Windows获取当前系统时间函数总结
- Windows获取当前系统时间函数总结
- Windows 获取当前系统时间函数总结
- Windows 获取当前系统时间函数总结
- Windows 获取当前系统时间函数总结
- Windows 获取当前系统时间函数总结
- Windows内核编程基础篇之定时器
- QT编程QML获取当前系统时间
- 《Windows内核编程》---系统时间和定时器
- 《Windows内核编程》---系统时间和定时器
- Windows内核编程基础篇之常见内核数据结构
- CrossApp之 获取当前系统时间
- HDU 4568【最短路+状压DP】
- C语言实验题——三个数排序
- 4.Realm(数据处理,交互)
- 一对多的单项关联
- 最大公约数Stein算法之verilog实现
- Windows内核编程基础篇之获取当前系统时间
- web_reg_find和web_find的区别
- PhotoView源码分析(1)
- 各种杂项组件(3)之--CalendarView(日历视图)、DatePicker/TimePicker(日期、时间选择器)、NumberPicker(数值选择器)
- PAT 1081. Rational Sum (20)
- hdu1060 Leftmost Digit
- JohnsonTroter 排列生成算法
- #牛客#代码实现:二叉树的序列与反序、逆栈、链表回文、MaxTree
- hdu 1013 Digital Roots(模拟 || 数论)