首页
社区
课程
招聘
[求助]diskperf磁盘写保护无法控制某个卷
发表于: 2011-3-21 15:09 6346

[求助]diskperf磁盘写保护无法控制某个卷

2011-3-21 15:09
6346
我用的WDK 7600下的diskperf源码,做一个磁盘过滤。
测试时,我的虚拟机有2块硬盘。开机后,能正常保护除系统所在的磁盘以外的磁盘。
为了增加动态保护和不保护的2种情况,修改后,测试发现一个问题。情况如下:
我的主磁盘---系统所在的磁盘,有2个分区C:和D:
次磁盘---无任何系统,软件等。有2个分区F:和G:

测试情况这样的:开机后,F:和G:都不能写入数据,修改文件名,修改属性,删文件等等要修改磁盘数据的操作都被拒绝,提示磁盘保护 --- 测试成功。

我用应用程序发了一个控制码(自定义控制码,diskperf下我增加了的,打印信息DbgView也拿到),实现停止保护磁盘。
发现:F:盘如愿的解锁了,新建文件,修改文件,删除等等操作都可以完成。
独独G:跟保护了的情况一样的,没有解锁。甚是不解。

我的理解:我的F:和G:都是在一个磁盘,2个盘符的状态应该一样。为什么一个实现了,一个没有?
望高手赐教,正在赶工。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 7651
活跃值: (523)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
是不是跟分区类型有关?然后影响了你程序中对分区偏移什么的判断?调试一下啊~~
2011-3-21 16:40
0
雪    币: 121
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
多谢指点,应该不是的。我说下我的方法:
在PNP的派遣例程的IRP_MN_START_DEVICE的时候,我会判断是否是OS所在的磁盘,如果不是我就在device extension里面的某个成员Flag设置为0 --- 标识系统所在的盘;同时,我会设置一个Protected的成员为1 --- 标识保护。后面的写IRP,修改IRP等的时候,都检查这2个标识成员。
这样在对磁盘写的时候,保护功能是提供了,就是没办法解除写保护。
刚刚测试了,如果是1个磁盘只有1个分区的话,也没办法解除写保护,但是U盘可以。
2011-3-21 16:54
0
雪    币: 121
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
解除写保护,就是把保护为设置为0.
这个方法是从国外某软件逆向的时候,学来的。
2011-3-21 16:57
0
雪    币: 121
活跃值: (121)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
测试发现了,F:是FAT32的,G:是NTFS。
把G:格式化为FAT32后,就正常了。但是NTFS却依然如故。
没想明白,磁盘过滤和文件系统是木有关系的。难道是FAT32和NTFS之间某些不同的地方需要特别处理?望哪位大侠,赐教下,感激之至啊!
2011-3-22 10:47
0
雪    币: 107
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
只能说是具体代码判断问题 。。。
2011-3-22 13:47
0
雪    币: 538
活跃值: (269)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
路过  二楼说的有理...
看问题莫非你是我们J***公司**大牛?
2011-3-22 14:02
0
雪    币: 538
活跃值: (269)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
估计是 NTFS 驱动内部维持了一个标志,当磁盘驱动返回只读的时候就修改这个标志,但是去除保护的时候这个标志还是只读,所以导致NTFS无法去除写保护, 但是应该有某种方式或者接口来修改这个NTFS的内部标志吧.求驱动帝解释.
PS:以上纯属本驱动盲瞎说
2011-3-24 09:19
0
游客
登录 | 注册 方可回帖
返回
//