phoebe
驱动牛犊
驱动牛犊
  • 注册日期2001-11-19
  • 最后登录2001-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1241回复:2

如何写WDM的中断处理程序?

楼主#
更多 发布于:2001-12-25 15:59
我正在写一个有关PLX9054开发扳的wdm驱动。主要通过吧bar[2]映射的内存空间传递命令和应答。当目标板完成写后,通过向主机端发送一个中断通知。但是我写的中断处理程序经常导致死机。可能是因为本人没有进行清中断操作,导致目标板不停发送中断。
   哪位高手指点一下,在W2K操作系统的WDM驱动程序中进行清中断的指令是什么?
 :(
panxi
驱动牛犊
驱动牛犊
  • 注册日期2001-06-09
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分22分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-12-26 09:19
前几天我遇到类似的问题,后来我用softice跟踪了一下,问题解决了。

我的硬件的中断开始以后,系统马上就死机,我的中断处理程序甚至
只是return false而已,也死机。

后来发现中断处理程序中,函数传来的第2个参数有可能为NULL:


bool Isr(IN PKINTERRUPT pIntObj,PDEVICE_EXTENSION dx)
{
 ULONG Data32;
 UCHAR Data8;
 if(dx==NULL){
  return false;
 }

 //Read Register status

READ_REGISTER_ULONG();


 ...
}

上段程序中,我发现传进来的dx可能是空的,加上判断
 if(dx==NULL)return false;

以后,系统没有在死机了。

此外,中断是一定要清的,但是怎么清完全有你的芯片决定的
我的是向某个寄存器写一个值,
如果你不清中断,通常第一个中断来了以后,第二个就不会来了
phoebe
驱动牛犊
驱动牛犊
  • 注册日期2001-11-19
  • 最后登录2001-12-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-12-27 11:17
多谢。
游客

返回顶部