驱动定时器
#include<ntddk.h>KTIMER Ktimer;
KDPC Kdpc;
LARGE_INTEGER Time;typedef struct MyStruct
{int a;}context,*Pcontext;VOID PassObj(__in struct _KDPC *Dpc,__in_opt PVOID DeferredContext,//KeInitializeDpc 第三個(gè)參數(shù)__in_opt PVOID SystemArgument1,__in_opt PVOID SystemArgument2
)
{Pcontext p =(Pcontext) DeferredContext;KdPrint(("定時(shí)器.............%d\n",p->a));KeSetTimer(&Ktimer, Time, &Kdpc);return;
}//啟動(dòng)定時(shí)器
VOID DriveTimer(ULONG64 msec)
{//初始化KTIMERKeInitializeTimer(&Ktimer);//初始化dpcPcontext p = {0};KeInitializeDpc(&Kdpc, (PKDEFERRED_ROUTINE)PassObj, &p);//設(shè)置定時(shí)器Time.QuadPart = -10000 * msec;KeSetTimer(&Ktimer, Time, &Kdpc);
}//停止定時(shí)器
VOID UnTimer()
{KeCancelTimer(&Ktimer);
}//卸載驅(qū)動(dòng)
VOID UnLoad(IN PDRIVER_OBJECT DriverOject)
{UnTimer();
}NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverOject, IN PUNICODE_STRING Path)
{DriveTimer(1000);DriverOject->DriverUnload = UnLoad;return STATUS_SUCCESS;
}
總結(jié)
- 上一篇: C++类中封装线程函数
- 下一篇: 驱动线程与事件