#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 第三个参数
__in_opt PVOID SystemArgument1,
__in_opt PVOID SystemArgument2
)
{
Pcontext p =(Pcontext) DeferredContext;
KdPrint(("定时器.............%d\n",p->a));
KeSetTimer(&Ktimer, Time, &Kdpc);
return;
}
//启动定时器
VOID DriveTimer(ULONG64 msec)
{
//初始化KTIMER
KeInitializeTimer(&Ktimer);
//初始化dpc
Pcontext p = {0};
KeInitializeDpc(&Kdpc, (PKDEFERRED_ROUTINE)PassObj, &p);
//设置定时器
Time.QuadPart = -10000 * msec;
KeSetTimer(&Ktimer, Time, &Kdpc);
}
//停止定时器
VOID UnTimer()
{
KeCancelTimer(&Ktimer);
}
//卸载驱动
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;
}
驱动定时器
猜你喜欢
转载自blog.csdn.net/weixin_42052102/article/details/82933255
今日推荐
周排行