楼主: 银砾石
收起左侧

[原创工具] 火流星(2011-2-15 FS.DLL更新---bug修复)

  [复制链接]
olly
发表于 2009-11-19 10:49:24 | 显示全部楼层
原帖由 银砾石 于 2009-11-19 08:07 发表
看下定义对不对,fat,ntfs结构前三个长度都是WORD
WORD ErrorCode;
WORD fs;
WORD fstype;

或者你看下我的console程序,测试下返回结果对吗?再或者你把枚举的结果返回给fs_enumfile来删除,看能不能删除?


我错了,,我的Debug目录下的FS.dll没替换 而release目录下的FS.dll文件已经替换为最新版本了,今天早上起来时才发现。。。

评分

参与人数 1人气 +1 收起 理由
银砾石 + 1 感谢支持,欢迎常来: )

查看全部评分

olly
发表于 2009-11-22 02:56:48 | 显示全部楼层
复制文件的时候出现了一点问题。(最初以为是我的用法出了问题后面看了下例子好像也有问题~~)
比如复制NTFS元数据用dll复制的话会复制出很大一个文件来,而用火流星会复制出真实的数据(大小0kb).
详细见图..

[ 本帖最后由 olly 于 2009-11-22 03:30 编辑 ]
2009-11-22_025001.jpg

Release.part1.rar

450 KB, 下载次数: 9

MyTest

Release.part2.rar

450 KB, 下载次数: 9

MyTest

Release.part3.rar

190.82 KB, 下载次数: 11

MyTest

评分

参与人数 1人气 +1 收起 理由
银砾石 + 1 感谢支持

查看全部评分

银砾石
 楼主| 发表于 2009-11-22 09:55:01 | 显示全部楼层
嗯,我系统里没有这个文件,你的是VISTA?我明天在WIN7上看看有没有
其他文件呢?

你用火流星(2.0.0.9版这个),导出那个文件的记录信息传上来看下
具体:对应文件--右键--导出--记录信息

我在想,是不是因为fs.dll没有截断结尾的原因,这点是我忘了说的,FS.DLL复制时返回的是簇的整数倍的文件大小,最后缺了一个设置文件结尾(而火流星有这个)
SetFilePointer(FP, filesize, NULL, FILE_BEGIN);
SetEndOfFile(FP);

具体的要看下这个文件的记录信息才知道什么问题
银砾石
 楼主| 发表于 2009-11-22 10:07:35 | 显示全部楼层
文件系统定义(即WORD fstype;//新加入,指明文件系统类型)
#define FileSystem_FAT16 0x01
#define FileSystem_FAT32 0x02
#define FileSystem_NTFS 0x03
#define FileSystem_EXFAT 0x04
#define FileSystem_REG 0x1001
#define FileSystem_PARTITION 0x2001
不需要主程序再判断文件系统类型了,另外,在下一版中,可以用FS_DELETENODE(node)来删除以上链表(也可以用原来的方法删)
关于FileSystem_PARTITION,是枚举分区的,下一版提供

#define FS_CLEAR_OTHER                        (0x04)                //删除文件时仅删除其他(仅NTFS,即删除文件对应的流文件,hardlink)----------这个必须要和其他联合用

[ 本帖最后由 银砾石 于 2009-11-22 10:11 编辑 ]
olly
发表于 2009-11-22 10:28:34 | 显示全部楼层
原帖由 银砾石 于 2009-11-22 09:55 发表
嗯,我系统里没有这个文件,你的是VISTA?我明天在WIN7上看看有没有
其他文件呢?

你用火流星(2.0.0.9版这个),导出那个文件的记录信息传上来看下
具体:对应文件--右键--导出--记录信息

我在想,是不是因 ...



我的是xp,等等,我看下文件信息。。



导出了,见附件

[ 本帖最后由 olly 于 2009-11-22 10:34 编辑 ]

392.rar

278 Bytes, 下载次数: 8

导出的MFT信息~~

olly
发表于 2009-11-22 10:29:42 | 显示全部楼层
原帖由 银砾石 于 2009-11-22 10:07 发表
文件系统定义(即WORD fstype;//新加入,指明文件系统类型)
#define FileSystem_FAT16 0x01
#define FileSystem_FAT32 0x02
#define FileSystem_NTFS 0x03
#define FileSystem_EXFAT 0x04
#define FileSystem_RE ...


呵呵,添加枚举分区就更好了,支持~~
银砾石
 楼主| 发表于 2009-11-22 12:38:47 | 显示全部楼层

回复 396楼 olly 的帖子

根据导出的纪录看,是因为纪录里写明了非常驻,但RUN列表又是空的(通常而言文件大小小于一定长度的话是常驻的,非常驻是说明数据长度太大,放不下,需要外部空间来记录),而程序根据正常的列表里判断,所以出错了---但怎么会得出那个文件大小,则有点奇怪了
下一版会加入判断

枚举分区的那个功能是根据硬盘分区表来枚举的
olly
发表于 2009-11-22 13:35:23 | 显示全部楼层
原帖由 银砾石 于 2009-11-22 12:38 发表
根据导出的纪录看,是因为纪录里写明了非常驻,但RUN列表又是空的(通常而言文件大小小于一定长度的话是常驻的,非常驻是说明数据长度太大,放不下,需要外部空间来记录),而程序根据正常的列表里判断,所以出错了- ...



了解了~,,NTFS下好像一定要重启才能删除文件。。。
如果文件比较小的话,比如1KB的txt文件,删除后,在资源管理器中打开一下,文件又回来了。。。
银砾石
 楼主| 发表于 2009-11-22 13:39:52 | 显示全部楼层
对的,缓存的原因

磁盘上文件是已经删除了,但缓存没有更新,所以会这样

1kb的文件就是像上面所说的,常驻。
olly
发表于 2009-11-22 15:21:07 | 显示全部楼层
dll在枚举exFAT格式磁盘时有时会出现异常。

文件夹中的文件有时会错乱,比如d文件在A文件夹中,但是枚举时会出现在B文件夹(B文件夹为空)中,这时再在B文件夹中建立一个文件c,A中能枚举出d文件了,但是B中还是会枚举到d,c两个文件。。
还有貌似在特定的文件数下,如果尝试枚举最后一个空文件夹时,dll会直接崩溃。

评分

参与人数 1人气 +1 收起 理由
银砾石 + 1 好的,明天我在有EXFAT的机子上测试下

查看全部评分

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-12-28 03:20 , Processed in 0.106792 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表