birdzxf
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2824回复:19

IRP_MJ_WRITE的问题,请各位DX赐教,不胜感激!!!!!!!!

楼主#
更多 发布于:2004-04-13 23:16
IRP_MJ_WRITE的问题,请各位DX赐教,不胜感激!!!!!!!!


小弟初学驱动开发,现正在学习Filemon代码,试着改写,现遇到一个问题请赐教。
我想禁止一个文件夹的写操作,在IRP_MJ_WRITE:请求中判断并返回STATUS_ACCESS_DENIED
打开一个已经存在的word文件,改动后保存,winword进程会出现非法操作,并会出现延迟写入错误.
请各位大侠赐教到底如何拦截,期盼。

万望给为大虾多多指导~~~

 

[编辑 -  4/13/04 by  birdzxf]

最新喜欢:

rhpengrhpeng
zoneup
驱动牛犊
驱动牛犊
  • 注册日期2003-08-26
  • 最后登录2011-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-04-13 23:25
关注中~~~
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2004-04-13 23:35
WORD的修改不同,好象是生成一个TMP文件,然后对其操作,最后关闭的时候先删除原来的文件,然后把该TMP文件名字改为原来的文件名,你现在不让他删除原来的,而WORD又要重新命名相同的名字,自然出错了。
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
birdzxf
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-13 23:49
WORD的修改不同,好象是生成一个TMP文件,然后对其操作,最后关闭的时候先删除原来的文件,然后把该TMP文件名字改为原来的文件名,你现在不让他删除原来的,而WORD又要重新命名相同的名字,自然出错了。


我没有拦截任何删除操作,只是他在irq_mj_create中先创建了一个TMP文件,大小在3k左右.我可以在拦截时将这个临时文件设成只读属性,但是无法将word文件设成只读属性.是不是方法有误.
菜鸟上路,请再赐教,谢谢.

 



[编辑 -  4/13/04 by  birdzxf]
birdzxf
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-04-14 10:03
自己顶一下

walkonthesky
驱动中牛
驱动中牛
  • 注册日期2003-11-26
  • 最后登录2012-11-06
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-04-14 14:09
又学到东西了
[img]http://www.driverdevelop.com/forum/upload/walkonthesky/2004-07-08_2004-07-07_b847.gif[/img]
birdzxf
驱动牛犊
驱动牛犊
  • 注册日期2003-10-15
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-05-10 10:59
没人回

自己顶
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-07-17 17:20
IRP_MJ_WRITE的问题,请各位DX赐教,不胜感激!!!!!!!!


小弟初学驱动开发,现正在学习Filemon代码,试着改写,现遇到一个问题请赐教。
我想禁止一个文件夹的写操作,在IRP_MJ_WRITE:请求中判断并返回STATUS_ACCESS_DENIED
打开一个已经存在的word文件,改动后保存,winword进程会出现非法操作,并会出现延迟写入错误.
请各位大侠赐教到底如何拦截,期盼。

万望给为大虾多多指导~~~

 

[编辑 -  4/13/04 by  birdzxf]


我也遇到同样的问题,延缓写入错误,不是向要过滤的文件写入,我的不是word而是txt文件,可能所有文件都这样的,郁闷ing
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-07-17 19:25
呵呵,我现在去掉了延缓写入错误,是这样两个改动:
1、原来我设置有if(。。。)readok=1;现加了else readok=0的条件
2、在cleanup、close等里面也加入了代码,不过不知道这样是否有其它问题,反正word和txt都打不开指定文件了

还有,比你的多一句IoCompleteRequest( Irp,IO_NO_INCREMENT);
祝你好运。。。 :D
zhangc98
驱动牛犊
驱动牛犊
  • 注册日期2002-03-30
  • 最后登录2004-10-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-18 14:27
可不可以把相关的源代码贴出来看看那?
我也遇到了类似的问题,现在正在想办法解决。

目前初步的想法是完善错误检查的部分,
不知道你在cleanup和close中都加了些什么功能的代码那?

多谢了!

另外在对文件进行监控的过程中,发现不同的文件处理方法上有很大的不同。因为我只对所有NOCACHED/PAGING_IO/SYNA.PAGING_IO的部分进行拦截和处理,出现的症状是程序死掉,系统变得极慢:(
目前:新手上路; 目标:高级站友; 理想:开国大佬; 方法:自己的努力+大家的关照!
freecutelei
驱动牛犊
驱动牛犊
  • 注册日期2003-11-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-07-19 21:05
支持一下

贴出来大家讨论1下
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-19 21:49

都是这个网上的,全部都加的这些
Irp->IoStatus.Status=STATUS_INVALID_DEVICE_REQUEST;
Irp->IoStatus.Information=0;
IoCompleteRequest(Irp,IO_NO_INCREMENT);
return STATUS_INVALID_DEVICE_REQUEST;
但是设定条件是要么弄成局部变量判断,要么加个else,可能我就是省了else {不拦截}
waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2004-07-20 08:33
在IRP_MJ_CREATE里,这样做就可以阻止word了.

ULONG  disposition;
ACCESS_MASK DesiredAccess = 0;

disposition = (IrpStack->Parameters.Create.Options >> 24) & 0xFF;
if(IrpStack->Parameters.Create.SecurityContext){
DesiredAccess = (FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES |
FILE_WRITE_EA | FILE_APPEND_DATA) &
IrpStack->Parameters.Create.SecurityContext->DesiredAccess;
}

if((disposition != FILE_OPEN) || DesiredAccess){
// 取消
}

[编辑 -  7/20/04 by  waqis]

[编辑 -  7/20/04 by  waqis]
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2004-07-20 10:33
[quote]在IRP_MJ_CREATE里,这样做就可以阻止word了.

ULONG  disposition;
ACCESS_MASK DesiredAccess = 0;

disposition = (IrpStack->Parameters.Create.Options >> 24) & 0xFF;
if(IrpStack->Parameters.Create.SecurityContext){
DesiredAccess = (FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES |
FILE_WRITE_EA | FILE_APPEND_DATA) &
IrpStack->Parameters.Create.SecurityContext->DesiredAccess;
}

if((disposition != FILE_OPEN) || DesiredAccess){
// 取消
}
您的帖子让我很干兴趣,我原来就是想问只在IRP_MJ_CREATE中处理如何判断是读还是写,看来通过你这个方法能够实现,请大师开坛布法,将这些代码略加解释和扩展讲解一下如何?
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-08-01 22:14
抱歉,还是有些问题,能拒绝但是,拒绝后虽然改变规则word等文档也不能再打开,说什么文件被锁定,其它应用程序在使用,还是要走birdzxf老兄的设置只读属性或waqis的在IRP_MJ_CREATE中判断是写然后拦截才行,但是我用waqis的代码将irpstack改为curruntstack后加载就死机。birdzxf老兄设置属性为只读属性是如何设置的,能否将代码贴出来看看
waqis
驱动牛犊
驱动牛犊
  • 注册日期2003-06-03
  • 最后登录2017-08-21
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2004-08-02 09:01
没问题呀,我的代码就是这么写的,你用我的siimon.sys试试.
birdtomaster
驱动牛犊
驱动牛犊
  • 注册日期2003-10-03
  • 最后登录2008-09-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2004-08-02 17:15
没问题呀,我的代码就是这么写的,你用我的siimon.sys试试.

从哪里可以获得你的siimon.sys的代码,能发给我一份否?zhmxggg@126.com,多谢了
yearnyan
驱动牛犊
驱动牛犊
  • 注册日期2004-06-17
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-08-04 14:42
    强烈请求waqis兄把代码贴出来,
 
这样一来可以少许多人往泥潭里钻了.
 
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-08-05 17:30
是啊!!给大家看看你的代码吧!!!
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-08-08 10:10
沉了???!!!
游客

返回顶部