码迷,mamicode.com
首页 > 其他好文 > 详细

内核里获得系统版本,与系统滴答时间

时间:2019-10-22 12:33:29      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:系统   函数   memory   amp   编码   高版本   test   转换   min   

获得系统版本号。内核编程难免使用硬编码,以及使用一些高版本系统才出现的函数。为了使得驱动能在低版本的系统上正常运行,就需要根据不同系统做不同处理了。

VOID GetVersion()
{
ULONG NtBuildNumber;
RTL_OSVERSIONINFOW osi;
osi.dwOSVersionInfoSize=sizeof(RTL_OSVERSIONINFOW);
RtlFillMemory(&osi,sizeof(RTL_OSVERSIONINFOW),0);
RtlGetVersion(&osi);
NtBuildNumber=osi.dwBuildNumber;
DbgPrint("NtBuildNumber: %ld\n",NtBuildNumber);
return NtBuildNumber;
}

获得系统时间。在内核里获得系统时间的是标准时间(GMT+0),转换成本地时间还需要进行转换。此功能在发布测试版软件的时候特别有用,限制人们只能在指定时间之前使用。

VOID MyGetCurrentTime()
{
 LARGE_INTEGER CurrentTime;
 LARGE_INTEGER LocalTime;
 TIME_FIELDS TimeFiled;
 // 这里得到的其实是格林威治时间
 KeQuerySystemTime(&CurrentTime);
 // 转换成本地时间
 ExSystemTimeToLocalTime(&CurrentTime, &LocalTime);
 // 把时间转换为容易理解的形式
 RtlTimeToTimeFields(&LocalTime, &TimeFiled);
 DbgPrint("[TimeTest] NowTime : %4d-%2d-%2d %2d:%2d:%2d",
TimeFiled.Year, TimeFiled.Month, TimeFiled.Day, 
TimeFiled.Hour, TimeFiled.Minute, TimeFiled.Second);
}

内核里获得系统版本,与系统滴答时间

标签:系统   函数   memory   amp   编码   高版本   test   转换   min   

原文地址:https://www.cnblogs.com/csnd/p/11719007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!