Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
阅读:1122回复:3

定时器问题

楼主#
更多 发布于:2002-03-01 14:44
我在DeviceControl中初始化一个定时器
PKTIMER pKTimer = NULL;
...
case IOCTL_INIT_TIMER:
KeInitializeTimerEx(pKTimer, SynchronizationTimer);
KeInitializeDpc(pKTimer->Dpc, TimerProcFunction, NULL);
DueTime.QuadPart = -10000 * 2; //2ms 时间间隔
inQueue = KeSetTimer(pKTimer, DueTime, pKTimer->Dpc);
...

VOID TimerProcFunction(PKDPC dpc, PVOID context, PVOID junk1, PVOID junk2)
{
DbgPrint(\"Timer Worked!\");
}

我一启动,win98就死机。代码是在论坛中搬来的,请高手指教。
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-01 16:32
函数KeInitializeTimerEx(pKTimer, SynchronizationTimer)不会为KTIMER分配空间,pKTimer应自己分配内存,应定义一个KTIMER kTimer, 然后传入地址
没有你,我不知道怎么办...
Hideman
驱动中牛
驱动中牛
  • 注册日期2001-09-11
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分70分
  • 威望7点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-01 16:49
谢谢!

现在已经不死机了。
但TimerProcFunction好像只执行了一次。
再帮忙看看吧。

[编辑 -  3/1/02 作者: Hideman]
ymvv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-30
  • 最后登录2005-05-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-01 17:11
使用KeSetTimerEx函数,其中有一个参数Period, 可周期性地触发定时器
没有你,我不知道怎么办...
游客

返回顶部