Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
阅读:1316回复:6

如何在IoComplete routine里调用ZwWriteFile?

楼主#
更多 发布于:2004-12-18 06:07
根据DDK,IoSetCompletionRoutine() 里面指定的IoComplete例程运行在IRQL<=DISPATCH_LEVEL,而ZwCreateFile()必须运行于IRQL=PASSIVE_LEVEL,有没有可能让她能够在IoCompete例程中调用呢?请大家不吝赐教!(15分)

另外,为了调试这个driver,我把SoftIce启动设置为boot,初始化命令中将X;删掉,并载入相应的符号文件。但是重起之后,系统被终止,却看不到SoftIce的窗口。不知道是为什么? (5分)


[编辑 -  12/18/04 by  Odyssey]
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-12-18 14:33
1、应该可以调用的
2、为什么要去掉X呢,试试Ctrl+D
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-12-18 17:07
1.一开始我就试过了,结果蓝屏了。看bug check出错码正是IRQL_NOT_LESS_OR_EQUAL

2.再BOOT Mode事后怎么用Ctrl+D呢?还有关键是SoftIce似乎是可以调出来――系统加载其他的driver时中止了,但是却看不到SoftIce的窗口,只是一个黑屏。怀疑是和显卡有关。但在manual Mode启动都能调出来。显卡是ATI Mobility Radeon 7500笔记本用的。有大侠在笔记本上用SoftIce的吗?
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-12-19 14:46
IoCompete例程运行的级别与低层次驱动的IoCompieteRequest例成的相同。
所以要保证低层次驱动的IoCompieteRequest运行在PASSIVE_LEVEL的时候在相应的IoCompete中应该就可以调用ZwCreateFile()了!
试试看哦
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地下室#
发布于:2004-12-20 12:33
IoCompete例程运行的级别与低层次驱动的IoCompieteRequest例成的相同。
所以要保证低层次驱动的IoCompieteRequest运行在PASSIVE_LEVEL的时候在相应的IoCompete中应该就可以调用ZwCreateFile()了!
试试看哦

等于没说
建议使用WORKITEM或SYSTEMTHREAD来ZwCreateFile()......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
aiwadgj
驱动老牛
驱动老牛
  • 注册日期2004-11-13
  • 最后登录2020-12-24
  • 粉丝0
  • 关注0
  • 积分119分
  • 威望84点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-12-20 23:12
也可以用内核函数强制改变优先级的!
在DDK里有说明的,
看看吧
酒也在沉溺,何时麻醉我抑郁。过去了的一切会平息。。。。。。。
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-12-21 02:20
[quote]IoCompete例程运行的级别与低层次驱动的IoCompieteRequest例成的相同。
所以要保证低层次驱动的IoCompieteRequest运行在PASSIVE_LEVEL的时候在相应的IoCompete中应该就可以调用ZwCreateFile()了!
试试看哦

等于没说
建议使用WORKITEM或SYSTEMTHREAD来ZwCreateFile()...... [/quote]

正解!已经Queue到worker item里面了.
游客

返回顶部