阅读:3676回复:11
加文件头改变文件大小,向应用层屏蔽变化,可欺骗Word,但骗WordPad就不行
哪位知道改变文件大小,加了文件头后(按devia几个帖子提示),向应用层屏蔽变化,欺骗Word可以,但是骗WordPad就不行呢?
test.txt, 文件真实内容"001",文件头是"00", 要显示文件内容"1" Word打开test.txt显示"1"达到要求 可是WordPad打开test.txt显示"1 ",多的空位等于文件头的长度 NotePad打开文件直接报错 "存储空间不足,无法处理此命令" 另:如果不清理缓存还好,一旦清理缓存就会导致些莫名其妙的问题, 例如:Create时将FileObject记入链表,CleanUp时从链表中删除FileObject,清理缓存, 可FileObject都被关了,却在下一个读取中出现 千奇百怪,不知道是什么原因,请devia和各位指导一下,谢谢 |
|
|
沙发#
发布于:2007-04-23 09:03
1。还处理FastIo的READ、WRITE、QueryStandardInfo 部分了?
2。出现这种情况可能是STREAM FILE造成的,具体得自己跟踪一下 |
|
|
板凳#
发布于:2007-04-23 09:31
1。把FASTIO做了各种修改尝试还是不行,和上述一样,已经快绝望了
2。是Bug,找到了 有人可以讨论,不论是否有用,哪怕只言片语对于陷入困境的人都会有很大的鼓励,非常感谢devia |
|
|
地板#
发布于:2007-04-26 11:42
我顶
|
|
|
地下室#
发布于:2007-04-26 14:25
1。检查机器有无杀毒软件;
2。确认自己的驱动是否是在文件打开之前已经生效; |
|
|
5楼#
发布于:2007-04-26 15:32
需要处理SetInformation和QueryInformation,Read,Write,听说fastio不用处理,都返回false就好(除了open什么的那),它发现失败就会调irp操作。我也在做这个希望能多多交流:)
|
|
|
6楼#
发布于:2007-04-26 15:57
"可是WordPad打开test.txt显示"1 ",多的空位等于文件头的长度"
这个问题对短文件可以通过设置Irp->IoStatus.Information = 文件长度-文件头长度解决。 但是对于很大的文件,会有问题,现在不知该如何解决。 |
|
|
7楼#
发布于:2007-05-01 22:33
先说说小文件是如何解决的吧。我也碰到相同问题。如果能解决小文件,或许可以一起再解决大文件的问题了。
|
|
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,悲哀! ![]() |
|
9楼#
发布于:2007-05-06 08:10
多谢楼上,一看你的回复就知道 你真的非常无私
不过我在FastIoQueryStandardInfomation和IRP_MJ_DIRECTORY_CONTROL都处理了 ,而且DbgPrint显示修改文件大小返回值成功。修改文件大小是按devia的几个贴子提示的,该控制的全都控制了。 另操作系统仅装了Office,其他任何杀毒什么的都没有装,也测试了ReBoot,怎么试都不行 |
|
|
10楼#
发布于:2007-05-07 20:03
1.NotePad打开文件直接报错 "存储空间不足,无法处理此命令"
这个好像是因为FCB里的值不对, AllocationSize和FileSize过大会有这个提示, 调试器跟一下就知道了 |
|
11楼#
发布于:2011-05-25 15:18
呵呵,这个帖子算是结贴了吗?
本来还想来帮下忙 |
|