looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
阅读:3606回复:11

加文件头改变文件大小,向应用层屏蔽变化,可欺骗Word,但骗WordPad就不行

楼主#
更多 发布于:2007-04-23 08:48
哪位知道改变文件大小,加了文件头后(按devia几个帖子提示),向应用层屏蔽变化,欺骗Word可以,但是骗WordPad就不行呢?

test.txt, 文件真实内容"001",文件头是"00", 要显示文件内容"1"

Word打开test.txt显示"1"达到要求

可是WordPad打开test.txt显示"1  ",多的空位等于文件头的长度

NotePad打开文件直接报错 "存储空间不足,无法处理此命令"


另:如果不清理缓存还好,一旦清理缓存就会导致些莫名其妙的问题,

   例如:Create时将FileObject记入链表,CleanUp时从链表中删除FileObject,清理缓存, 可FileObject都被关了,却在下一个读取中出现

千奇百怪,不知道是什么原因,请devia和各位指导一下,谢谢
提问归提问,还是只能靠自己
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
沙发#
发布于:2007-04-23 09:03
1。还处理FastIo的READ、WRITE、QueryStandardInfo 部分了?
2。出现这种情况可能是STREAM FILE造成的,具体得自己跟踪一下
人总在矛盾中徘徊。。。
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-23 09:31
1。把FASTIO做了各种修改尝试还是不行,和上述一样,已经快绝望了

2。是Bug,找到了


有人可以讨论,不论是否有用,哪怕只言片语对于陷入困境的人都会有很大的鼓励,非常感谢devia
提问归提问,还是只能靠自己
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-26 11:42
我顶
提问归提问,还是只能靠自己
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
地下室#
发布于:2007-04-26 14:25
1。检查机器有无杀毒软件;
2。确认自己的驱动是否是在文件打开之前已经生效;
人总在矛盾中徘徊。。。
fatmouse527
驱动牛犊
驱动牛犊
  • 注册日期2006-12-27
  • 最后登录2009-04-10
  • 粉丝1
  • 关注0
  • 积分347分
  • 威望85点
  • 贡献值0点
  • 好评度81点
  • 原创分1分
  • 专家分0分
5楼#
发布于:2007-04-26 15:32
需要处理SetInformation和QueryInformation,Read,Write,听说fastio不用处理,都返回false就好(除了open什么的那),它发现失败就会调irp操作。我也在做这个希望能多多交流:)
驱网无线,快乐无限
JTIGER163
驱动牛犊
驱动牛犊
  • 注册日期2006-12-29
  • 最后登录2008-05-26
  • 粉丝0
  • 关注0
  • 积分240分
  • 威望25点
  • 贡献值0点
  • 好评度24点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-04-26 15:57
"可是WordPad打开test.txt显示"1 ",多的空位等于文件头的长度"
这个问题对短文件可以通过设置Irp->IoStatus.Information = 文件长度-文件头长度解决。
但是对于很大的文件,会有问题,现在不知该如何解决。
驱网无线,快乐无限
fazwh
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2020-11-18
  • 粉丝0
  • 关注0
  • 积分32分
  • 威望303点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2007-05-01 22:33
先说说小文件是如何解决的吧。我也碰到相同问题。如果能解决小文件,或许可以一起再解决大文件的问题了。
yaolixing
驱动小牛
驱动小牛
  • 注册日期2006-06-27
  • 最后登录2010-07-15
  • 粉丝1
  • 关注0
  • 积分991分
  • 威望135点
  • 贡献值0点
  • 好评度124点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2007-05-05 23:48
1.NotePad打开文件直接报错 "存储空间不足,无法处理此命令"
----------------------
你没有在FastIoQueryStandardInfomation()中改变文件的长度!!

2.可是WordPad打开test.txt显示"1 ",多的空位等于文件头的长度
------------------------------------------
当文件长度小于65536,即32kb时,可以在IRP_MJ_READ中设置Irp-> Flags&IRP_NOCACHE解决
猜测,你没有在IRP_MJ_DIRECTORY_CONTROL中改变文件大小,
断定你只,仅仅处理了IRP_MJ_QUERYINFORMATION,悲哀!
 
looksail
荣誉会员
荣誉会员
  • 注册日期2005-05-22
  • 最后登录2014-03-15
  • 粉丝2
  • 关注0
  • 积分1016分
  • 威望991点
  • 贡献值0点
  • 好评度239点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2007-05-06 08:10
多谢楼上,一看你的回复就知道 你真的非常无私

不过我在FastIoQueryStandardInfomation和IRP_MJ_DIRECTORY_CONTROL都处理了 ,而且DbgPrint显示修改文件大小返回值成功。修改文件大小是按devia的几个贴子提示的,该控制的全都控制了。

另操作系统仅装了Office,其他任何杀毒什么的都没有装,也测试了ReBoot,怎么试都不行
提问归提问,还是只能靠自己
coolw
驱动牛犊
驱动牛犊
  • 注册日期2006-03-20
  • 最后登录2012-04-13
  • 粉丝0
  • 关注0
  • 积分521分
  • 威望65点
  • 贡献值0点
  • 好评度54点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2007-05-07 20:03
1.NotePad打开文件直接报错 "存储空间不足,无法处理此命令"
这个好像是因为FCB里的值不对, AllocationSize和FileSize过大会有这个提示, 调试器跟一下就知道了
hzactiv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-18
  • 最后登录2012-08-14
  • 粉丝0
  • 关注1
  • 积分41分
  • 威望202点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2011-05-25 15:18
呵呵,这个帖子算是结贴了吗?
本来还想来帮下忙
游客

返回顶部