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

Posted csnd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内核里获得系统版本,与系统滴答时间相关的知识,希望对你有一定的参考价值。

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

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
",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);
}

以上是关于内核里获得系统版本,与系统滴答时间的主要内容,如果未能解决你的问题,请参考以下文章

linux系统的最小时间间隔是多少

STM32 的系统滴答定时器( Systick) 彻底研究解读

Linux时间子系统之四:定时器的引擎:clock_event_device

系统定时器(滴答定时器)

嵌入式里做linux内核开发有没有前途

CentOS(RHEL)内核版本与系统版本对应关系