首页
社区
课程
招聘
[求助]IRQL 怎样降至passive_level运行
发表于: 2009-3-26 22:27 13252

[求助]IRQL 怎样降至passive_level运行

2009-3-26 22:27
13252
我有段驱动代码在定时函数中被调用,但这段代码要在passive_level下运行才能成功。。。我怎么降至passive_level运行这段代码。。。

恳请大侠指导指导,驱动开发不熟悉。。最好能给段简单的代码例子

谢谢了


[注意]看雪招聘,专注安全领域的专业人才平台!

收藏
免费
支持
分享
最新回复 (7)
雪    币: 709
活跃值: (2455)
能力值: ( LV12,RANK:1010 )
在线值:
发帖
回帖
粉丝
2
队列.
2009-3-27 08:46
0
雪    币: 375
活跃值: (12)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
curIrql = KeGetCurrentIrql();
if (curIrql > PASSIVE_LEVEL) {
                        KeLowerIrql(PASSIVE_LEVEL);
.............................
KeRaiseIrql(curIrql,&oldIrql);
}
2009-3-27 10:09
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
4
楼上的方法是不可行的

不能主动降低IRQL

参考MSDN:KeLowerIrql :
It is a fatal error to call KeLowerIrql using an input NewIrql that was not returned by the immediately preceding call to KeRaiseIrql.
2009-3-27 11:22
0
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
5
可以用线程来搞个定时器,线程里DelayExecution一下
2009-3-27 12:15
0
雪    币: 635
活跃值: (101)
能力值: ( LV12,RANK:420 )
在线值:
发帖
回帖
粉丝
6
ExQueueWorkItem
2009-3-27 12:50
0
雪    币: 233
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
书上的例子演示如何提升和降低IRQL级别。
1
2
3
4
5
6
7
8
9
10
11
void RasieIRQL_Test()
{
     KIRQL oldirql;
     //确保当前IRQL等于或小于DISPATCH_LEVEL
     ASSERT(KeGetCurrentIrql()<= DISPATCH_LEVEL);
     //提升IRQL至DISPATCH_LEVEL,并将先前的IRQL保存
   KeRaiseIrql(DISPATCH_LEVEL,&oldirql);
     //...
     //恢复到先前的IRQL
     KeLowerIrql(oldirql);
}
2009-3-27 13:01
0
雪    币: 233
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
这里说的很明白,主动降级是不行的。
除非自己升,自己降。
2009-3-27 13:04
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册