内核中的时间相关函数

获取系统当前时间
KeQuerySystemTime函数返回当前系统时间,这个时间是以格林尼治时间为准,从1601年1月1日起经过的时间。

void KeQuerySystemTime(
 OUT PLARGE_INTEGER CurrentTime
);

ExSystemTimeToLocalTime把系统时间转换成当前时区对应的时间,时区可以在控制面板中设置。

void ExSystemTimeToLocalTime(
IN  PLARGE_INTEGER SystemTime,	//系统时间
OUT  PLARGE_INTEGER LocalTime	//当前时区时间
);

ExLocalTimeToSystemTime把当前时区时间转换为系统时间。

void ExLocalTimeToSystemTime(
IN  PLARGE_INTEGER LocalTime, //当前时区时间
OUT PLARGE_INTEGER SystemTime	//系统时区
);

RtlTimeFieldsToTime可以将当前的年月日得到系统时间

NTSYSAPI BOOLEAN RtlTimeFieldsToTime(
IN  PTIME_FIELDS   TimeFields, //输入的年月日等信息
IN  PLARGE_INTEGER Time	//输出转换的系统时间
);

typedef struct TIME_FIELDS {
    CSHORT Year;
    CSHORT Month;
    CSHORT Day;
    CSHORT Hour;
    CSHORT Minute;
    CSHORT Second;
    CSHORT Milliseconds;
    CSHORT Weekday;
} TIME_FIELDS;

RtlTimeToTimeFields函数将当地时区时间转换为具体年月日等信息

NTSYSAPI VOID RtlTimeToTimeFields(
 IN  PLARGE_INTEGER Time,	//系统时间
 OUT PTIME_FIELDS   TimeFields	//输出的具体年月日信息
);

KeQuerySystemTime->ExSystemTimeToLocalTime->RtlTimeToTimeFields 就可以得到当地时区的具体时间信息。

VOID Time_Test()
{
	LARGE_INTEGER current_system_time;
	//得到当前系统时间
	KeQuerySystemTime(&current_system_time);

	LARGE_INTEGER current_local_time;
	//从系统时间转换成当地时区时间
	ExSystemTimeToLocalTime(&current_system_time,&current_local_time);

	TIME_FIELDS current_time_info;
	//由当地时区时间得到月日年信息
	RtlTimeToTimeFields(&current_local_time,&current_time_info);

	//显示年月日等信息
	KdPrint(("Current year:%d\n",current_time_info.Year));
	KdPrint(("Current month:%d\n",current_time_info.Month));
	KdPrint(("Current day:%d\n",current_time_info.Day));
	KdPrint(("Current Hour:%d\n",current_time_info.Hour));
	KdPrint(("Current Minute:%d\n",current_time_info.Minute));
	KdPrint(("Current Second:%d\n",current_time_info.Second));
	KdPrint(("Current Milliseconds:%d\n",current_time_info.Milliseconds));
	KdPrint(("Current Weekday:%d\n",current_time_info.Weekday));
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值