DPC定时器
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定时器的更多相关文章
- x64枚举DPC定时器
@写在前面 不同于x86,x64的DPC是被加密了的.对于x64DPC的兴趣始于我已经流产的scalpel计划.当时问某牛怎么遍历,得到的答案是“500大洋给代码”.真是R了狗了,好歹小哥我 ...
- Windows驱动开发-DPC定时器
DCP是一种使用更加灵活的定时器,可以对任意间隔时间进行定时.DPC定时器的内部使用了一个定时器对象KTIMER,当你设定了定时器之后,从设定开始起经过这个时间之后操作系统会将一个DPC定时器的例程插 ...
- Timer和DPC
一般两种方法使用/设置定时器,一种是使用I/O定时器例程,一种是使用DPC例程.1.定时器的实现1)使用I/O定时器例程NTSTATUSIoInitializeTimer(IN PDEVICE_OBJ ...
- 关于DPC和workitem的简单用法
这个随笔是记录我半个月左右的时间,从想法到查资料请教,以及到实践的成果. 我想实现的是,隔定时时间写文件,本以为调用写的函数就可以实现了,结果各种BSOD,IRQL_NOT_LESS_OR_EQUAL ...
- 《Windows驱动开发技术详解》之定时器
I/O定时器 I/O定时器是DDK提供的一种定时器.它每个1s钟系统会调用一次I/O定时器例程.I/O定时器例程运行在DISPATCH_LEVEL级别,因此在这个例程中不能使用分页内存,否则会引起页故 ...
- 驱动开发:内核枚举DpcTimer定时器
在笔者上一篇文章<驱动开发:内核枚举IoTimer定时器>中我们通过IoInitializeTimer这个API函数为跳板,向下扫描特征码获取到了IopTimerQueueHead也就是I ...
- RemoveDPC
HOOKSSDT中加入了DPC之后 要取消DPC 首先找到DPCHookSSDT.sys的基地址和大小 通过枚举所有DPC的地址 将在范围之内的DPC定时器全部移除 枚举DPC: WinXP: 1. ...
- 手工杀毒辅助软件(PC Hunter) V1.51 免费绿色版
软件名称: 手工杀毒辅助软件(PC Hunter) 软件语言: 简体中文 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 4.7MB 图片预览: 软件简介: PC Hunter是 ...
- XueTr 0.45 (手工杀毒辅助工具) 绿色版
软件名称: XueTr 0.45 (手工杀毒辅助工具)软件语言: 简体中文授权方式: 免费软件运行环境: Win7 / Vista / Win2003 / WinXP 软件大小: 3.3MB图片预览: ...
随机推荐
- BZOJ1660: [Usaco2006 Nov]Bad Hair Day 乱发节
1660: [Usaco2006 Nov]Bad Hair Day 乱发节 Time Limit: 2 Sec Memory Limit: 64 MBSubmit: 606 Solved: 289 ...
- 【转】深层次探讨mutex与semaphore之间的区别(下)
原文网址:http://blog.chinaunix.net/uid-23769728-id-3173282.html 这篇博文很长,虽然这是下篇,但还没结束,benchmark方面的东西正在进行中, ...
- 【转】Android 带checkbox的listView 实现多选,全选,反选 -- 不错
原文网址:http://blog.csdn.net/onlyonecoder/article/details/8687811 Demo地址(0分资源):http://download.csdn.net ...
- 在vim下写python 会出现python错误:unexpected unident
需要在.vimrc 的set tabstop=4的这一行上面增加 set expandtab 否则会报unexpected unident
- xml中不能直接添加ViewGroup
我知道可以直接添加一个<View />的,今天想添加个容器类,然后后台动态添加SurfaceView到ViewGroup容器里,不过提示inflate报错了.难道ViewGroup不能直接 ...
- 实战:mysql版本号升级
/***************************************************** mysql 5.6.19 升级到5.6.21 ********************** ...
- apache在windows上开启gzip的方法
环境搭建好之后,默认并没有开启gzip功能.需要修改apache的httpd.conf配置文件进行开启.开启方法如下:1. httpd.conf中打开deflate_Module和headers_Mo ...
- 20M宽带的网速等价于多少?
最近有朋友问我:我家的宽带是20兆的,怎么网速这么慢? 运营商说的20M,完整的单位应该是20Mbps(bps:比特率),而日常中所说的下载速度单位是MB,两者是不一样的. 它们之间的换算关系是:1M ...
- 自定义Toast
简易自定义Toast public class MainActivity extends ListActivity );//边角 gradientDrawable.setGradien ...
- ASP.NET-FineUI开发实践-2
FineUI好处之一在于No JS,这里的No JS并不是不使用JS,JS对于ASP.Net是必不可少的,只是FineUI把大部分JS封装,如果想用,后台提供了很多方法返回JS,Get...Refer ...