zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
阅读:1740回复:5

经验丰富的高手们,请进!!!关于IRQL的问题:能硬性指定硬件IRQ号所对应的IRQL么?

楼主#
更多 发布于:2005-05-11 23:31
我在驱动程序中使用HalGetInterruptVector()函数测试了从IRQ0到IRQ23的IRQL值,如下:
IRQ 0:  IRQL is 5 (ISA)System timer
IRQ 1:  IRQL is 10   (ISA)KeyBoard
IRQ 2:  IRQL is 5    (ISA)No Used
IRQ 3:  IRQL is 4    (ISA)No Used
IRQ 4:  IRQL is 9    (ISA)COM1
IRQ 5:  IRQL is 10   (ISA)No Used
IRQ 6:  IRQL is 5    (ISA)Floppy disk controller
IRQ 7:  IRQL is 8    (ISA)No Used
IRQ 8:  IRQL is 9    (ISA)CMOS/real time clock
IRQ 9:  IRQL is 10   (ISA)Microsoft ACPI-Compliant System
IRQ 10: IRQL is 6    (ISA)No Used
                     (PCI)Intel(R) 82801EB SMBus Controller - 24D3
IRQ 11: IRQL is 7    (ISA)No Used
IRQ 12: IRQL is 4    (ISA)PS/2 Compatible Mouse
IRQ 13: IRQL is 7    (ISA)Numeric data processor
IRQ 14: IRQL is 6    (ISA)Primary IDE Channel
IRQ 15: IRQL is 8    (ISA)Secondary IDE Channel
IRQ 16: IRQL is 8    (PCI)Intel(R) 82801EB USB Universal Host Controller
                     (PCI)Intel(R) 82801EB USB Universal Host Controller
IRQ 17: IRQL is 8    (PCI)Realtek AC\'97 Audio
IRQ 18: IRQL is 8    (PCI)Intel(R) 82801EB USB Universal Host Controller
IRQ 19: IRQL is 8    (PCI)Intel(R) 82801EB USB Universal Host Controller
IRQ 20: IRQL is 8    (PCI)No Used
IRQ 21: IRQL is 8    (PCI)No Used
IRQ 22: IRQL is 8    (PCI)No Used
IRQ 23: IRQL is 8    (PCI)Standard Enhanced PCI to USB Host Controller

其中各IRQ所对应的硬件是在Win2000的“系统”->“硬件”->“设备管理器”中查看的,从上面的测试可以看出:IRQ值与IRQL值并不一致,按理说IRQ0是所有ISA总线中中断级别最高的,但其对应的IRQL确只有5,比硬盘控制器的IRQL低,这样是否意味着当硬盘控制器中断正在执行时,系统时钟中断就必须等待?按我估计,当系统时钟中断正在执行时,尽管硬盘控制器的IRQL比较高,但是,由于其硬件IRQ的优先级比较低,因此8259将不会把其中断信号送到CPU中去,因此其应该不会打扰系统时钟中断的执行,但是反过来我就不知道会怎样了;还请高手们指点一二。
另外,IRQ所对应的IRQL值是Win2000内核分配的,能否人为改动呢?(我指的不是在中断服务程序中用Ke...()函数提高CPU的当前IRQL值),如果能的话就可以较容易的实现实时控制了,高手们多多指教。


[编辑 -  5/13/05 by  zhenlongyang]
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
沙发#
发布于:2005-05-12 02:12
我也有你一样问题 !!
我以parallel port做驱动,硬件是IRQ7,HalGetInterruptVector()返回mapped vector是0x37,IRQL是0x14,用windbg看是nt!KiUnexpectedInterrupt7.
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-12 22:14
大侠们,多说点啦,大家一起交流,说得好一定给分,既然Win2000系统可以给定一个IRQ的IRQL值,那么同样都是使用“软”的方式,编驱动的程序员可有什么办法来更改IRQL值呢?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-13 09:16
大侠们,多说点啦,大家一起交流,说得好一定给分,既然Win2000系统可以给定一个IRQ的IRQL值,那么同样都是使用“软”的方式,编驱动的程序员可有什么办法来更改IRQL值呢?

由于现在中断控制器都是可编程的,改变它肯定行,但这方面的资料太少,所以不敢多言 :D
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-13 22:31
自己顶一下,盼望高手们快点来。
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-15 01:14
有人能说清楚Windows实现IRQL的具体细节么?
游客

返回顶部