热门关键字: excel200 蓝光笔记 pps有图像 excel winrar使 添加水印 輸入法 actionsc
当前位置 : IT 知识库 > 网络安全 > 编程技术 > 正文

Windows驱动编程基础教程(连载8)

作者:楚狂人时间:08-06-04

Windows驱动编程基础教程(5.1-5.2)

5.1 获得当前滴答数

    在编程中,获得当前的系统日期和时间,或者是获得一个从启动开始的毫秒数,是很常见的需求。获得系统日期和时间往往是为了写日志。获得启动毫秒数很适合用来做一个随机数的种子。有时也使用时间相关的函数来寻找程序的性能瓶颈。
    熟悉Win32应用程序开发的读者会知道有一个函数GetTickCount(),这个函数返回系统自启动之后经历的毫秒数。在驱动开发中有一个对应的函数KeQueryTickCount(),这个函数的原型如下:

    VOID
        KeQueryTickCount(
            OUT PLARGE_INTEGER  TickCount
        );

    遗憾的是,被返回到TickCount中的并不是一个简单的毫秒数。这是一个“滴答”数。但是一个“滴答”到底为多长的时间,在不同的硬件环境下可能有所不同。为此,必须结合另一个函数使用。下面这个函数获得一个“滴答”的具体的100纳秒数。

    ULONG
          KeQueryTimeIncrement(
              );

    得知以上的关系之后,下面的代码可以求得实际的毫秒数:
   
    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;
    }
   
    这不是一个简单的过程。不过所幸的是,现在有代码可以拷贝了。

最新文章
内核级HOOK的几种实现与应用
实现内核级HOOK对于拦截、分析、跟踪系统内核起着致关重要的作用。实现的方法不...
Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,...
相关文章
Windows平台内核级文件访问
1.背景 在windows平台下,应用程序通常使用API函数来进行文件访问,创建,打开,...
Windows驱动编程基础教程(连载11)
Windows驱动编程基础教程(6.3) 6.3 使用事件通知 一些读者可能熟悉事件驱...