楼主: 银砾石
收起左侧

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

  [复制链接]
银砾石
 楼主| 发表于 2009-11-17 15:49:50 | 显示全部楼层
2009-11-17更新
typedef const wchar_t * (* FS_GETERROR)();//返回错误信息,必须要注册FS_REGFIRE后可用
增加底层删除文件功能
typedef int (* FS_DELETEFILE)(const wchar_t * path,const wchar_t * Stream,BYTE Mode);//删除文件,传入路径
//mode:二进制 00000000 最低位表示目录区(00000001),第二位表示内容(00000010),第三位表示其他(00000100,仅NTFS有效)
//有效位都为1则除了有效位表示的区域外,额外需要回收空间,目前fat及exfat支持2位,NTFS支持3位
//如fat及exfat mode为00000011(0x03)则表示删除此文件的目录区及清空内容,并回收空间。ntfs的00000011(0x03)则
//表示删除此文件,但不会清除流文件的内容及回收流文件所占的空间,00000101(0x05)则表示删除此文件的所有hardlink(包括本身)
//但不删除内容,同样不回收空间。
//NTFS删除后可能需要重启才看得到效果,EXFAT可能会写入磁盘失败,VISTA及以上可能会不支持------假设主程序提供的读写接口是RING3的话。

评分

参与人数 2经验 +5 人气 +1 收起 理由
tawny2008 + 5 版区有你更精彩:)
Deker + 1 我顶

查看全部评分

tawny2008
发表于 2009-11-17 18:35:28 | 显示全部楼层
又更新了,支持石头
wo1234
发表于 2009-11-17 22:19:51 | 显示全部楼层
更新了啊,不过不能直接用。哈哈。纯支持了。
angel13th
发表于 2009-11-17 22:39:42 | 显示全部楼层
越来越深奥了。。。
olly
发表于 2009-11-18 10:34:53 | 显示全部楼层
支持~~~
顺便问下,那个清除目录区有没有释放簇占用呢?
银砾石
 楼主| 发表于 2009-11-18 10:55:01 | 显示全部楼层

回复 386楼 olly 的帖子

不会释放

可以用此功能来处理U盘读写时插拔产生的非法文件名,也可以处理NTFS硬连接占坑防删除

PS:如果使用00000001这样标志位先删除某个文件,那么以后不能再用其他表示位来删除其他部分(因为目录项里面的信息已删除,找不到这个文件了)
对于NTFS来说,如果删除一个目录(全标志位),那么不会导致此目录的0XA0所指向簇删除
而对于FAT及EXFAT则会删除(在考虑NTFS是不是也删除了比较好?)----至于其包含的文件或子目录,则全部丢失(不回收空间)
银砾石
 楼主| 发表于 2009-11-18 11:06:54 | 显示全部楼层
关于回收空间,是这样处理的
FAT、EXFAT
支持标志为两位,那么当两位都是1即00000011(0x03)时会删除簇链并回收空间,其他位忽略
NTFS
支持标志为三为,那么当两位都是1即00000011(0x03)时会回收主文件的空间及删除主文件(但流文件不回收空间,HARDLINK也不删除);
当三位都是1即00000111(0x07)时会回收文件所有的空间及删除主文件(流文件也回收空间,HARDLINK全部删除)
第三位(00000100)的含义可以理解为包含其他

所以:当一般需要删除一个文件时推荐0x07,需要破坏一个文件时推荐0x06,需要删除一个错误文件时推荐0x01
olly
发表于 2009-11-19 00:16:56 | 显示全部楼层
枚举文件返回的节点在debug模式下好像有点问题(没有fstype信息)具体体现为长文件名第一个字符缺失..
银砾石
 楼主| 发表于 2009-11-19 08:07:27 | 显示全部楼层
看下定义对不对,fat,ntfs结构前三个长度都是WORD
WORD ErrorCode;
WORD fs;
WORD fstype;

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

评分

参与人数 1人气 +1 收起 理由
evilrabbit + 1 加油

查看全部评分

左寒
发表于 2009-11-19 09:37:15 | 显示全部楼层


很深奥,看不懂,更不知道怎么使用,以后再慢慢研究~

顶大侠一个!!
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2024-11-15 23:31 , Processed in 0.103906 second(s), 15 queries .

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

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