WDM驱动中如何获得当前系统时间
2004-07-02 10:22
507 查看
WDM驱动中如何获得当前系统时间?
可以按照以下步骤:
1. 用 KeQuerySystemTime() 获得当前的 GMT System Time. 这是一个从 1601-01-01 以来的计数(单位是 100ns)。
2. 如果是 Win2000/XP,调用 ExSystemTimeToLocalTime() 将 GMT System Time 值转换成当前时区的 Local System Time.
如果是在 Win9x 下,不能调用 ExSystemTimeToLocalTime(),可以这样作:
查询注册表键 (REG_DWORD)
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/ActiveTimeBias
得到 Time-Zone Bias 值,再用 GMT System Time 减去 Bias,即可得到 Local System Time。
3. 用 RtlTimeToTimeFields() 将 System Time 值转换成 年:月:日:时:分:秒 的形式,保存在一个 TIME_FIELDS 结构中。
typedef struct TIME_FIELDS
{
CSHORT Year;
CSHORT Month;
CSHORT Day;
CSHORT Hour;
CSHORT Minute;
CSHORT Second;
CSHORT Milliseconds;
CSHORT Weekday;
} TIME_FIELDS;
可以按照以下步骤:
1. 用 KeQuerySystemTime() 获得当前的 GMT System Time. 这是一个从 1601-01-01 以来的计数(单位是 100ns)。
2. 如果是 Win2000/XP,调用 ExSystemTimeToLocalTime() 将 GMT System Time 值转换成当前时区的 Local System Time.
如果是在 Win9x 下,不能调用 ExSystemTimeToLocalTime(),可以这样作:
查询注册表键 (REG_DWORD)
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/TimeZoneInformation/ActiveTimeBias
得到 Time-Zone Bias 值,再用 GMT System Time 减去 Bias,即可得到 Local System Time。
3. 用 RtlTimeToTimeFields() 将 System Time 值转换成 年:月:日:时:分:秒 的形式,保存在一个 TIME_FIELDS 结构中。
typedef struct TIME_FIELDS
{
CSHORT Year;
CSHORT Month;
CSHORT Day;
CSHORT Hour;
CSHORT Minute;
CSHORT Second;
CSHORT Milliseconds;
CSHORT Weekday;
} TIME_FIELDS;
相关文章推荐
- 制作带签名的cab包
- 基础网络命令
- 在WDM驱动中如何获得PCI卡的物理Slot号
- 界面测试
- VBConversions VB.Net to C# Converter
- 我周围的饮食文化
- 公司结构调整,进入“非常时期”
- 新一代应用结构体系(一) 面向服务的架构概述
- This snapshot was automatically generated on
- 成功 自信 快乐――给中国青年学生的一封信
- phpBB 编码标准规范
- 方便 Weblog 显示加亮语法 PHP 代码的小程序
- 忙
- PHP 经验、技巧整理(一)
- 中文汉字截取函数(支持gb2312、big5、UTF-8)
- ZT: 超强软件教程合集(最新增加于2004.06.25)
- 配置 Apache 实现禁止图片盗链~
- InteliIM 创意集锦 - 基于房间的即时通讯软件之小探
- windows xp下重装ie浏览器的方法
- JavaMail实例详解