首页
社区
课程
招聘
[求助]去掉一个 switch 中的 case 之后卸载驱动就会蓝屏
发表于: 2016-7-28 15:39 5809

[求助]去掉一个 switch 中的 case 之后卸载驱动就会蓝屏

2016-7-28 15:39
5809
我用《Windows驱动开发技术详解》中的源码“IOCTL_Test”进行编译(XP Checked 版本,WDK 7600.16385.1),发现一个好奇怪的现象,注释掉了 switch 中的 case 之后卸载时就会报蓝屏,查看蓝屏信息发现是“PAGE_FAULT_IN_NONPAGED_AREA”,我百思不得其解,有哪位牛牛能帮忙解释一下吗?

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 36
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
注释掉 IOCTL_TEST3,剩下 IOCTL_TEST1 和 IOCTL_TEST2 就会,若是注释掉 IOCTL_TEST2 就不会,我怀疑这个 IOCTL_TEST2 有问题,但是按理来说驱动就是模块,没调用就不可能出错啊,这是神马情况呢?
2016-7-28 15:41
0
雪    币: 90
活跃值: (80)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
为什么不调试下crashdump呢
2016-7-28 15:49
0
雪    币: 36
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
dump 已上传,供大牛调试。

我不是不想调,是调不出来,好奇怪的原因和现象
上传的附件:
2016-7-28 15:57
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RBB
5
把DriverEntry的#pragma INITCODE去掉
2016-7-28 17:50
0
雪    币: 36
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
好奇怪居然成功了,我是将 DriverEntry 和 CreateDevice 前面的 #pragma INITCODE 去掉就可以了,这是为什么呢?

DriverEntry 不是都要放在 INICODE 里面才节省内存吗?

而且将 case3 去掉注释就没问题了,好奇怪的问题。
2016-7-28 18:09
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
RBB
7
你的symbollink name放在initcode里,在unload的时候可能已经给释放了,delete symbollink就会crash. 或者你把字符串放到全局。
2016-7-29 09:22
0
雪    币: 36
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
我以后不用 INITCODE 了可以吗?占这点内存不碍事吧
2016-7-29 12:00
0
游客
登录 | 注册 方可回帖
返回
//