《Windows内核安全与驱动开发》阅读笔记 -- 索引目录
《Windows内核安全与驱动开发》4.3 时间与定时器
一、获取自系统启动以来的毫秒数
/* 函数作用:求自操作系统启动以来所经历的毫秒数 参数1 mesc: 计算结果(毫秒) */ void MyGetTickCount(PULONG msec) { LARGE_INTEGER tick_count; ULONG myinc = KeQueryTimeIncrement(); // 获取滴答数 KeQueryTickCount(&tick_count); // 获取一滴答所用的纳秒事件 tick_count.QuadPart *= myinc; tick_count.QuadPart /= 10000; *msec = tick_count.LowPart; }
二、获取当前系统时间
/* 函数作用:输出当前时间 */ VOID MyCurTimerStr() { LARGE_INTEGER snow, now; TIME_FIELDS now_fields; static WCHAR time_str[32] = { 0 }; // 获取标准时间 KeQuerySystemTime(&snow); // 转换为当地时间 ExSystemTimeToLocalTime(&snow, &now); // 转换为人们可以理解的时间要素 RtlTimeToTimeFields(&snow, &now_fields); // 输出到日志中 DbgPrint("%4d-%2d-%2d %2d-%2d-%2d", now_fields.Year, now_fields.Month,now_fields.Day, now_fields.Hour, now_fields.Minute, now_fields.Second); }
三、定时器 -- 未完待续