winDDK开发驱动遇到IRQL低DeviceIOControl的打断IRQL高的中断服务程序

myth_avalon 2015-09-23 11:30:22
各位大侠,我在用winddk开发一个CAN驱动程序,现在遇到一个很奇怪的问题。经测试,单独发送和接收都正常,但是接收和发送同时进行时,一段时间后(时间不定)就接收不到数据了。通过debugview跟踪,发现最后一次进中断服务程序(ISR)时出了问题。 最后一次进中断后根据debugview打印的消息发现,首先,驱动正在DeviceIOControl()函数中执行操作,然后接受中断来了,进入中断服务程序进行处理,这个时候问题来了,本来应该是中断服务程序运行结束后才会继续运行DeviceIOControl()函数,但是实际情况是两个函数一个运行一句,感觉在同步运行。DeviceIOControl()的IRQL是0(passive_level),ISR的IRQL是9,这个问题实在太奇怪了,望各位大侠帮忙解决一下。
...全文
213 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
worldy 2015-09-24
  • 打赏
  • 举报
回复
0级应该是优先级别最高的吧?
myth_avalon 2015-09-24
  • 打赏
  • 举报
回复
顶一个,别沉了!
myth_avalon 2015-09-24
  • 打赏
  • 举报
回复
引用
0级应该是优先级别最高的吧?
对于中断请求(IRQ)的确是0最高,但是IRQL是反过来的,0是最低的,31是最高的

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧