Windows 驱动:获取系统当前时间,生成格式字符串

可以按照以下步骤:

1. 用 KeQuerySystemTime() 获得当前的 GMT System Time. 这是一个从 1601-01-01 以来的计数(单位是 100ns)。

2. 调用 ExSystemTimeToLocalTime() 将 GMT System Time 值转换成当前时区的 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; 


示例代码,获取时间串函数:

(本函数将会在后文中使用:Windows 驱动:向 DbgPrintf 一样将调试信息输出到文件

(PS:源代码有更好的格式发表吗)

//----------------------------------------------------------------------
//
// GetCurrentTimeString
//
// Get current time string. (format: %d-%02d-%02d %02d:%02d:%02d)
//
//----------------------------------------------------------------------
PCHAR
GetCurrentTimeString()
{
 static CHAR  szTime[128];
 LARGE_INTEGER SystemTime;
 LARGE_INTEGER LocalTime;
 TIME_FIELDS  timeFiled;

 KeQuerySystemTime(&SystemTime);
 ExSystemTimeToLocalTime(&SystemTime, &LocalTime);
 RtlTimeToTimeFields(&LocalTime, &timeFiled);
 sprintf(szTime, "%d-%02d-%02d %02d:%02d:%02d"
  , timeFiled.Year
  , timeFiled.Month
  , timeFiled.Day
  , timeFiled.Hour
  , timeFiled.Minute
  , timeFiled.Second
  );

    return szTime;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值