shjdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分277分
  • 威望30点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
阅读:1261回复:5

wdm中的定时器问题(急)

楼主#
更多 发布于:2003-04-26 08:58
我定制了一个定时器程序,代码如下:

KTIMER* kTimer;//= new (NonPagedPool);
 //   kTimer=(KTIMER *)ExAllocatePool(NonPagedPool,100);

ASSERT(KeGetCurrentIrql() <= DISPATCH_LEVEL);
 // PKDPC dpc;  
t << \"Entering LpTestDevice::Device Control, \" << I << EOL;
ULONG fwLength=0;
switch (I.IoctlCode())
{
case BA_TIMER://启动定时器
{  LARGE_INTEGER DueTime={0};
KeInitializeTimerEx(kTimer, SynchronizationTimer);
KeInitializeDpc(kTimer->Dpc,TimerProcFunction,NULL);
KeSetTimerEx(kTimer,DueTime,POLLING_INTERVAL,kTimer->Dpc);

}
break;
case 0x0004:
           KeCancelTimer(kTimer);//取消定时器
KeRemoveQueueDpc(kTimer->Dpc);
ExFreePool(kTimer);
break;
          }
    
     其回掉函数如下:

  
VOID TimerProcFunction(PKDPC dpc, PVOID context, PVOID junk1, PVOID junk2)
{
       t << \"TimerProcFunction\\n\";
}

运行后能够实现按要求定时,但当上层程序执行case0x0004时或关闭驱动程序句柄时,计算机蓝屏重新启动。试了很多遍没有结果,恳请各位指导,给出改正代码。
shjdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分277分
  • 威望30点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-26 09:08
help me,I will give you my completed code in VC if you need.
shjdriver
驱动牛犊
驱动牛犊
  • 注册日期2003-04-01
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分277分
  • 威望30点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-04-26 09:09
太急了,帮帮忙吧
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-04-26 11:08
跟一下看究竟是哪段代码引起的蓝屏
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2003-04-26 13:32
KeCancelTimer
If a DPC object is associated with the timer, it too is canceled.

把KeRemoveQueueDpc(kTimer->Dpc);注释掉看看?
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-04-26 13:38
悄悄问一下:以上代码都是在同一个函数里边实现的吗?

如果是,则蓝屏是正常的,否则反而不正常了 :D :D :D

建议仔细看一下KeInitializeTimerEx()的说明。
游客

返回顶部