zoukankan      html  css  js  c++  java
  • 内核里获得系统版本,与系统滴答时间

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

    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);
    }
    
  • 相关阅读:
    剑指offer:二分查找找到旋转数组中的最小值
    强制索引
    剑指offer:青蛙跳台阶
    剑指offer:求和
    序列化和反序列化
    装饰器、生成器
    Python函数(一)
    【转】C# 中的委托和事件
    【读书笔记】备忘录模式翻译成C++了
    【学习笔记】Android 调试桥
  • 原文地址:https://www.cnblogs.com/csnd/p/11719007.html
Copyright © 2011-2022 走看看