nicol
驱动大牛
驱动大牛
  • 注册日期2001-11-28
  • 最后登录2009-07-30
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:910回复:0

菜鸟日记(-)

楼主#
更多 发布于:2002-02-15 04:59
菜鸟日记(-)
症状:在使用DS开发驱动程序的时候,使用向导生成原代码,编译成功,但在运行的时候,出现系统崩溃,错误代码是:IRQL_NOT_LESS_OR_EQUAL(0X0A)
资源:包括IRQ、IO、MEM
解决方法:检查代码,太菜,没有发现问题,但找到问题出在ISR上面,编译DS的相关示例程序,对资源访问没有问题。再看示例原代码,还是没有找到问题所在。最后发现向导生成的代码中在对DPC的处理上,和ISR的处理顺序有问题,硬件的中断是10ms就发出一个,这个时候,发现原代码中在对DPC进行setup的时候,是在ISR初始化之后,那么就有可能出现,中断太快,而导致ISR开始运行的时候, DPC还没有初始化成功,ISR的运行级别很高,完全可以中断掉DPC的初始化,所以产生ISR在排队DPC回调函数的时候,出现空指针。找到问题所以后,把DPC的setup提前到ISR的初始化前。运行成功,问题解决掉。

注:驱动程序的开发太累。不小心就是系统崩溃,而网络中的资源又很少,这个论坛还相对很集中了,这对很多象我一样对驱动程序还不是很熟悉的人来说,入手太困难;现在DS的资料也不是很多,而且多数还是E文的,(还好,有金山糍粑,但毕竟没有看中文来的快)。
所以在此抛砖(呵呵,不要跑,只是抛,不是拍砖),希望能看到更多、更精彩的学习文章。我也会继续写我的菜鸟日记,希望能对大家有所帮助。
:)
==寂寞骆驼==
游客

返回顶部