《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);
}

三、定时器 -- 未完待续

01-31 07:47