阅读:2853回复:13
我屏蔽了IRP_MJ_WRITE,为什么会出现这种警告窗口?如图
请为如何解决?
|
|
|
沙发#
发布于:2004-11-12 10:09
图片2
|
|
|
板凳#
发布于:2004-11-12 10:28
为什么要屏蔽IRP_MJ_WRITE,是不是不让写文件?
|
|
|
地板#
发布于:2004-11-12 10:31
是的,就是让磁盘只能读不能写。
|
|
|
地下室#
发布于:2004-11-12 10:57
是的,就是让磁盘只能读不能写。 那给你一个建议,通过处理IRP_MJ_CREATE可以实现。 disposition = (currentIrpStack->Parameters.Create.Options >> 24) & 0xFF; 如果disposition == FILE_OPEN,则是读取文件,否则就忽略。这样就可以禁止写文件、修改文件属性等。 如果还要禁止删除,就处理一下IRP_MJ_SET_INFORMATION。 |
|
|
5楼#
发布于:2004-11-12 11:01
我为了实现这个功能,苦苦呕心了一个多月,呵呵。
参考filemon慢慢试,希望你可以少走一些弯路。 |
|
|
6楼#
发布于:2004-11-12 11:44
谢谢fslife。
我研究filemon很久,可惜还不是很透彻。 [编辑 - 11/12/04 by aasa2] |
|
|
7楼#
发布于:2004-11-12 12:14
disposition == FILE_OPEN
可能处理不全 比如 OPEN_IF |
|
|
8楼#
发布于:2004-11-18 17:43
OPEN_IF有可能是真的create
|
|
9楼#
发布于:2004-11-19 10:45
另外处理IRP_MJ_WRITE的时候只处理非PAGING_IO,并且返回STATUS_MEDIA_WRITE_PROTECTED不会出现延缓写入失败。
|
|
10楼#
发布于:2007-03-08 16:08
在write()中直接返回STATUS_SUCCESS
|
|
11楼#
发布于:2007-03-08 17:43
其实上层应用写文件只是把数据缓存,然后统一由后台的System进程进行迟延写(Flush Cache)。
|
|
|
12楼#
发布于:2007-04-16 14:19
能给点具体的代码提示吗
|
|
13楼#
发布于:2007-04-17 23:28
IRP_MJ_WRITE处理的可能不只是你要屏蔽的文件的内容。还有很少该目录下面系统记录的隐藏文件可能被你屏蔽了。那些东西可能是系统必须写入的。写入失败的话,就会有这个提示。。其实你可以用filemon 观察一下,系统写一个a.txt文件的话,该目录下在有很多系统文件会被修改。
|
|