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


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

    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);
    }
    
  • 相关阅读:
    如何掌握所有的程序语言
    Excel技巧:如何绘制一份优秀的甘特图(项目管理)
    Excel技巧:如何绘制一份优秀的甘特图(项目管理)
    程序员的鄙视链
    程序员的鄙视链
    程序员的鄙视链
    程序员之间的鄙视链
    炮(棋盘DP)
    最长公共子上升序列
    black hack
  • 原文地址:https://www.cnblogs.com/csnd/p/11719007.html
Copyright © 2020-2023  润新知