我做了一个磁盘过滤驱动,按簇进行的读写跳转,达到还原的目的.一切正常...还算比较可以..但是因为速度太慢了,我就想,如把分块定为几个簇,就容易了.所以,我定为8个簇读写一次.因为,BITMAP文件中一个字节表示8个簇,这样方便..其它代码基本不变.同样处理不满8个簇的情况和记录...
全文
回复(8) 2007-12-21 17:21 来自版块 - 文件系统(过滤)驱动程序开发
表情
sc_wolf是不是处理这个MFT文件,要有什么特别的方法...谢谢..请各位帮我一下..(2007-12-23 18:20)
sc_wolf目录和文件损坏,只是在保护模式下,重启后,并不会出现保护数据被破坏了.所以,我认为只是垃圾数据被破坏了..现在就难了. 不知道有没有工具,可以分析MFT文件正确与否的东西...请各位帮我一下.谢谢..(2007-12-23 18:14)
sc_wolf我找到原因了.好像是MFT文件损坏了.. 楼上的说的,第一种可能不太存在,我详细测试了,读取簇和存取簇的代码.没有问题. 可能是你的说的日志文件的问题.可以帮我解释一下吗/. 还有,你说的写一个复制程序,这个容易,不过,减少复制数据无法测试出原因呀... 现在我把程序改成通...(2007-12-23 18:12)
dreamsity应该不是上限的问题,应该是数据没有正确的读取和存储的问题。 一个可能,若文件系统了在目录条目区修改了2k的数据,而你按照4K分块,则会读取4K的数据,存储4K的数据,如果没有正确从硬盘上直接读出来,就会出问题。 另一个可能,NTFS是一个支持日志的文件系统,对硬盘的数据的修改是有...(2007-12-22 14:48)
sc_wolf还是不行.用DiskExplorer找不到损坏目录,可能是我不会用吧... 再请问一下,利用自建IRP读写数据时,是不是读写时,有最大限制呀.. 我现在,如果是分成4k一个簇,每次读写,就达到了32K,是不是达到上限了,所以不行... 谢谢.请各位指点一下.(2007-12-22 11:33)
sc_wolf谢谢二位的支持,回2楼的,我是在NTFS上做的测试,没有特别处理目录区,因为我想目录区写出来,也是在磁盘上的.而且是在分区内,所以,还是当做的一般处理.如果说读写不足一个簇(块),先复制这个块到垃圾数据区,然后再让他写到垃圾数据区,这样就不会存在少写时的错误了..把一个簇当作一个...(2007-12-21 19:29)
dreamsity可以使用DiskExplorer直接分析磁盘上的文件系统的数据结构,看损坏是损坏成了什么样子。反过来推出自己出问题的地方。(2007-12-21 19:06)
dreamsity我猜测你可能是在NTFS上做的测试 NTFS的目录条目的最小单位是2k,也就是说如果创建一个文件,目录条目部分至少有2K的内容被改动。是不是NTFS的目录的条目的读写没有处理好啊。(2007-12-21 19:04)

返回顶部