windows驱动开发---中断级(IRQL)

本文介绍了Windows驱动开发中的IRQL(中断请求级别)概念,通过类比解释了中断及其优先级,说明了选择性响应中断的场景,并详细阐述了在驱动编程中不同IRQL级别如PASSIVE_LEVEL、APC_LEVEL和DISPATCH_LEVEL的含义及其应用。通过理解IRQL,开发者能更好地控制中断处理并确保系统的稳定运行。
摘要由CSDN通过智能技术生成

最近开始入门windows 驱动开发,遇到一个IRQL。不知道何解,于是找了些资料,顺带记录下。下面的东西可能有不准确,如发现错误之处请指正,以免误导他人(罪过),谢谢!。

1.什么是中断级(IRQL)

中断是一个大家都很熟悉的概念,这里只通俗的解释一下。假如我正在课堂看小说,这时老师过来了,于是我以大家都有的速度迅速将将小说切换为课本。这个过程中,“老师过来”中断了“看小说”转而为“看课本”。如果把我看成CPU,则“看”即CPU的动作(执行周期),“小说”是CPU当前执行的内容,“老师来了”引发一个中断信号,作为对这个中断信号的响应,CPU执行的内容由“小说”切换为“课本”。老师来了我之所以改看小说为看课本,可能基于两个原因(这也是响应中断的原因):

a.(处理紧急事务)我当时”悠哉的看小说“,老师的到来让我突然有了一个”看课本来骗过老师“的任务,于是我果断执行了。

b.(做更有意义的事情)我觉得看课本比看小说更有出息,所以我也果断执行了。(可能是老师的到来让我觉悟了)

对于不同的中断,其优先级通常是不一样的,即对中断的响应处理优先程度。比如说,我正在马路上走,这时突然前面出现一美女,同时后面出现一加速前进的车。这时,虽然我很想去追那美女,但我必须先停下来先让汽车过去。因为躲过汽车的优先级大于追美女。(话说,被汽车撞飞,一切美女就都是浮云了)。也就是说在处理一大堆中断时,我们是有个急缓先后的处理顺序。

IRQL是中断请求(Interrupt request)和级别(Level)两个词结合,即表示中断的优先级,简称中断级。

2. 选择性的响应中断

   虽然中断信号的到来表示有事情发生了,需要我们去处理。但有些时候,我们并不希望别人来打断我们当前所作的事,除非导致中断信号的事情非处理不可否则有严重的后果。这时我们就需要选择性的响应中断,对于不重要的中断全部屏蔽掉。比如说,一个医生正在实施重要手术,这时医生肯定是不希望被手机铃声打扰的,于是他将手机关机屏蔽手机产生的中断。但手术过程中发现血量不够了,这时他必须暂时停止手术去取血浆(假设只有他一个人在实施手术)。

这个过程就是选择性的响应中断。

3.驱动编程中IRQL的含义

驱动编程时,IRQL表示程序可以响应那些级别中断,而对那些级别的中断可以屏蔽掉。下面是Windows NT头文件中定义的IRQL表:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值