首页
社区
课程
招聘
[求助]一个奇怪的现象!
发表于: 2009-8-5 11:25 5061

[求助]一个奇怪的现象!

2009-8-5 11:25
5061
今天调试驱动的时候发现一个问题, 当系统刚刚启动的时候, 刚刚进入桌面的一两秒..PsCreateSystemThread(&hThread, 0, NULL, NULL, NULL, Thread, NULL) 这句放在 IRP_MJ_DEVICE_CONTROL 中被用户线程调用的时候.
蓝屏!// STOP : 0x000000C5(0xE2194000,0x00000002,0x00000001,0x805466E9)
错误是:操作系统当前的配置不能运行此应用程序。根据MSDN的解释是:
"STOP 0x000000C5 (parameter 1, parameter 2, parameter 3, parameter 4) DRIVER_CORRUPTED_EXPOOL
其中 parameter 1 是所引用的内存,parameter 2 是内部请求级别 (IRQL),parameter 3 可能是值 0(读操作)或值 1(写操作),parameter 4 是所引用内存的地址。当尝试用一个太高的进程 IRQL 使用无效内存时,可能会发生此情况。这种情况几乎总是由已损坏系统池的驱动程序造成的。"
如果系统完全启动了再加载我的驱动则不会出问题.要强调的一点是Thread基本是空的,不会是线程函数的问题. 而这句如果放在 DriverEntry 中由系统线程调用,则在相同的情况下是没问题的.对此我非常疑惑,想知道如何判断系统是否已经准备好了?为什么会发生这种现象?各位大牛请指点下.不胜感激.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
2
IRP_MJ_DEVICE_CONTROL的派遣例程的IRQL不一定是PASSIVE_LEVEL吧,PsCreateSystemThread放在XxxDispatchDeviceControl里当然可能会蓝……

The DispatchRead, DispatchWrite, and DispatchDeviceControl routines of lowest-level device drivers, and of intermediate drivers layered above them in the system paging path, can be called at IRQL = APC_LEVEL and in an arbitrary thread context.

From MSDN
2009-8-6 03:23
0
雪    币: 362
活跃值: (25)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
我想也可能是IRQL的问题, 这个先不管.主要疑惑的是只有开机进桌面的前2秒会挂.如果系统完全启动,则不会蓝.
2009-8-6 11:22
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我想也可能是IRQL的问题, 这个先不管.主要疑惑的是只有开机进桌面的前2秒会挂.如果系统完全启动,则不会蓝.
================================================================
开机前两秒调用者和进桌面以后手工调用者不同吧
2009-8-7 18:46
0
雪    币: 362
活跃值: (25)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
同样是手工双击启动程序.
2009-8-12 12:51
0
游客
登录 | 注册 方可回帖
返回
//