nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1027回复:7

关于irql的问题

楼主#
更多 发布于:2003-02-28 10:15
ntddk的帮组文件中强调了一些函数须在特定的irql下才可以用,我想问的是不同的驱动是不是采用不同的irql级别,不会有高的级别出现。
不限容量的免费邮箱 www.k65.net
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-28 10:40
在同一个驱动中不同的例程就有可能运行在不同的irql level上
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
edgesoul
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2007-09-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-28 11:02
正像楼上那位说的,不仅不同的驱动程序会提升和降低IRQL,在某一驱动程序中也时常发生提升和降低IRQL的情况,例如硬件中断。
可以通过KeGetCurrentIrql来观看当前的IRQL。
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-28 12:43
那么我怎样才能过保证我调用的ddk库函数是在正确的irql level下运行的呢?
不限容量的免费邮箱 www.k65.net
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-28 13:13
那么我怎样才能过保证我调用的ddk库函数是在正确的irql level下运行的呢?


了解大多数通用例程的irql
运用函数的时候在ddk中查询该函数的指定irql
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-03-02 18:37
谢谢楼上。
那我如何给我自己写的函数指定一个合适的irql level呢。
不限容量的免费邮箱 www.k65.net
edgesoul
驱动牛犊
驱动牛犊
  • 注册日期2002-11-06
  • 最后登录2007-09-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-03-02 21:31
可以使用如下一些函数来完成IRQL的提升和下降等操作。(摘自MSDN)
KeRaiseIrql
Raises the hardware priority to a given IRQL value, thereby masking off interrupts of equivalent or lower IRQL on the current processor.
KeRaiseIrqlToDpcLevel
Raises the hardware priority to IRQL DISPATCH_LEVEL, thereby masking off interrupts of equivalent or lower IRQL on the current processor.
KeLowerIrql
Restores the IRQL on the current processor to its original value.
KeGetCurrentIrql
Returns the current hardware priority IRQL value.
godhuntress
驱动小牛
驱动小牛
  • 注册日期2002-12-10
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-03-02 23:05
Oney的书里有这么一句:绝大多数时候不用去管IRQL,因为例程几乎总是会自己在正确的IRQL上运行
我的理解几乎不用管他。是不是啊?
武汉新手前来报道! 请不佞赐教!
游客

返回顶部