KeInitializeTimer 初始化定时器

KeInitializeTimerEx 初始化定时器

KeSetTimer 开启定时器(只执行一次)

KeSetTimerEx 开启定时器(可以设置循环)

KeInitializeDpc 初始化DPC对象

KeCancelTimer 取消定时器

在驱动中是以100纳秒为单位的
1000纳秒=1微秒
1000微秒=1毫秒
1000毫秒=1秒 ** KTIMER my_timer;//注意要定义全局变量
KDPC KiTimerExpireDpc;//注意要定义全局变量 LARGE_INTEGER duetime = { };
KeInitializeTimerEx(&my_timer, NotificationTimer);
KeInitializeDpc(&KiTimerExpireDpc, (PKDEFERRED_ROUTINE)KiTimerExpirationFunction, NULL);
KeSetTimerEx(&my_timer, duetime, , &KiTimerExpireDpc);
VOID KiTimerExpirationFunction(IN struct _KDPC *Dpc,IN PVOID DeferredContext,IN PVOID SystemArgument1,IN PVOID SystemArgument2
)
{
KdPrint(("定时器....................\n")); }; KeCancelTimer(&my_timer);//取消定时器 另外一种方法/////////////////////////////// typedef struct _DEVICE_EXTENSION { LIST_ENTRY list_head;
KSPIN_LOCK list_lock;
PVOID thread_pointer;
BOOLEAN terminate_thread;
KEVENT request_event;
KTIMER my_timer;
KDPC KiTimerExpireDpc;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION; //创建设备
IoCreateDevice(pDriverObj,sizeof(DEVICE_EXTENSION),NULL,FILE_DEVICE_UNKNOWN,,FALSE,&device_object); device_extension = (PDEVICE_EXTENSION)device_object->DeviceExtension;
//初始化定时器
KeInitializeTimerEx(&device_extension->my_timer, NotificationTimer);
// 初始化定时器过程的DPC对象
KeInitializeDpc(&device_extension->KiTimerExpireDpc,(PKDEFERRED_ROUTINE)KiTimerExpirationFunction, NULL);
//启动定时器
KeSetTimerEx(&device_extension->my_timer, duetime, , &device_extension->KiTimerExpireDpc); device_extension->terminate_thread = FALSE; PDEVICE_EXTENSION device_extension;
device_extension = (PDEVICE_EXTENSION)pDriverObj->DeviceObject->DeviceExtension;
//取消定时器
KeCancelTimer(&device_extension->my_timer);

DPC定时器的更多相关文章

  1. x64枚举DPC定时器

    @写在前面      不同于x86,x64的DPC是被加密了的.对于x64DPC的兴趣始于我已经流产的scalpel计划.当时问某牛怎么遍历,得到的答案是“500大洋给代码”.真是R了狗了,好歹小哥我 ...

  2. Windows驱动开发-DPC定时器

    DCP是一种使用更加灵活的定时器,可以对任意间隔时间进行定时.DPC定时器的内部使用了一个定时器对象KTIMER,当你设定了定时器之后,从设定开始起经过这个时间之后操作系统会将一个DPC定时器的例程插 ...

  3. Timer和DPC

    一般两种方法使用/设置定时器,一种是使用I/O定时器例程,一种是使用DPC例程.1.定时器的实现1)使用I/O定时器例程NTSTATUSIoInitializeTimer(IN PDEVICE_OBJ ...

  4. 关于DPC和workitem的简单用法

    这个随笔是记录我半个月左右的时间,从想法到查资料请教,以及到实践的成果. 我想实现的是,隔定时时间写文件,本以为调用写的函数就可以实现了,结果各种BSOD,IRQL_NOT_LESS_OR_EQUAL ...

  5. 《Windows驱动开发技术详解》之定时器

    I/O定时器 I/O定时器是DDK提供的一种定时器.它每个1s钟系统会调用一次I/O定时器例程.I/O定时器例程运行在DISPATCH_LEVEL级别,因此在这个例程中不能使用分页内存,否则会引起页故 ...

  6. 驱动开发:内核枚举DpcTimer定时器

    在笔者上一篇文章<驱动开发:内核枚举IoTimer定时器>中我们通过IoInitializeTimer这个API函数为跳板,向下扫描特征码获取到了IopTimerQueueHead也就是I ...

  7. RemoveDPC

    HOOKSSDT中加入了DPC之后 要取消DPC 首先找到DPCHookSSDT.sys的基地址和大小 通过枚举所有DPC的地址  将在范围之内的DPC定时器全部移除 枚举DPC: WinXP: 1. ...

  8. 手工杀毒辅助软件(PC Hunter) V1.51 免费绿色版

    软件名称: 手工杀毒辅助软件(PC Hunter) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 4.7MB 图片预览: 软件简介: PC Hunter是 ...

  9. XueTr 0.45 (手工杀毒辅助工具) 绿色版

    软件名称: XueTr 0.45 (手工杀毒辅助工具)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 3.3MB图片预览: ...

随机推荐

  1. SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件

    需求   SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件   扩展   class SparkContext(pyspark.SparkContext): def ...

  2. 元素水平垂直居中(transform,margin,table-cell,jQuery)

    1.水平居中 .div{ margin:0 auto; (或者 margin:auto;) width:500px; height:300px; } 2.使用margin水平垂直居中 方式一: .di ...

  3. 使用read(),write(),seekg(),seekp()实现二进制方式文件随机存取

    // binary.cpp -- binary file I/O #include <iostream> #include <fstream> #include <iom ...

  4. openStack 云平台使用一般杂记

    1. To launch an instance,you must at least specify the flavor,image name,network,security group,keyp ...

  5. 状压dp-poj-1170-Shopping Offers

    题目链接: http://poj.org/problem?id=1170 题目意思: 购物车里有b种(0=<b<=5)物品,每种物品告诉物品代号c(1=<c<=999),数量为 ...

  6. chrome播放语音时,在chrome 控制台中报 DOMException: The play() request was interrupted by a call to pause(). 的问题.

    $(document).ready(function () { var audioElement = $( '<audio>' + ' <source src="" ...

  7. NetworkX学习笔记-5-NetworkX中怎样对多个网络赋属性,并根据属性排序

    这是我在数据分析过程中遇到的实际问题,简单记录一下.这里以DiGraph为例,其他类型的网络(图)的处理方法是一样的. 按照这里:http://networkx.github.io/documenta ...

  8. java中基于TaskEngine类封装实现定时任务

    主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...

  9. 【剑指offer】和为定值的连续正数序列

    .可是他并不满足于此,他在想到底有多少种连续的正数序列的和为100(至少包含两个数).没多久,他就得到还有一组连续正数和为100的序列:18,19,20,21,22.如今把问题交给你,你能不能也非常快 ...

  10. java的Comparator和Comparable

    java的Comparator和Comparable 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序.      ...