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

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

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

Windows驱动编程基础教程(5.3)

5.3 使用定时器

    使用过Windows应用程序编程的读者的读者一定对SetTimer()映像尤深。当需要定时执行任务的时候,SetTimer()变得非常重要。这个功能在驱动开发中可以通过一些不同的替代方法来实现。比较经典的对应是KeSetTimer(),这个函数的原型如下:

    BOOLEAN
          KeSetTimer(
               IN PKTIMER  Timer,                // 定时器
                IN LARGE_INTEGER  DueTime,    // 延后执行的时间
                IN PKDPC  Dpc  OPTIONAL        // 要执行的回调函数结构
            );

    其中的定时器Timer和要执行的回调函数结构Dpc都必须先初始化。其中Timer的初始化比较简单。下面的代码可以初始化一个Timer:

    KTIMER my_timer;
    KeInitializeTimer(&my_timer);

    Dpc的初始化比较麻烦。这是因为需要提供一个回调函数。初始化Dpc的函数原型如下:

    VOID
          KeInitializeDpc(
               IN PRKDPC  Dpc,
                IN PKDEFERRED_ROUTINE  DeferredRoutine,
                IN PVOID  DeferredContext
            );

    PKDEFERRED_ROUTINE这个函数指针类型所对应的函数的类型实际上是这样的:

    VOID
    CustomDpc(
            IN struct _KDPC  *Dpc,
            IN PVOID  DeferredContext,
            IN PVOID  SystemArgument1,
            IN PVOID  SystemArgument2
        );

     读者需要关心的只是DeferredContext。这个参数是KeInitializeDpc调用时传入的参数。用来提供给CustomDpc被调用的时候,让用户传入一些参数。
至于后面的SystemArgument1和SystemArgument2则请不要理会。Dpc是回调这个函数的KDPC结构。

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