NTFS文件系统
+ -

NTFS 创建文件

2021-07-01 215 0

假如我们要建立一个文件 “子目录1file.txt”,假设”子目录1”已经存在于根目录,是建立的file文件大小为7000个字节,每个簇大小为4096字节。

  1. 读取文件第一个扇区的引导扇区,获取簇大小MFT的起始位置以及每个MFT项的大小
  2. 读取第一个MFT项,即$MFT文件的MFT项,由它的$DATA属性获取其它MFT项的位置。
  3. 为准备新建的文件建立MFT项,访问$MFT文件$BITMAP属性,找到一个未分配的项。第一个空闲项为400号,把它分配给新文件,并将$BITMAP中相应的位置1,说明已经被分配占用
  4. 初始化MFT项,跳转到400号MFT项的位置,将其中的内容清除。建立标准信息属性($STANDARD_INFORMATION)和文件名属性($FILE_NAME),时间值设置为当前时间。在MFT项头中设置使用标记。
  5. 从6号MFT项的$Bitmap文件中为文件的$DATA属性寻找并分配2个簇(因为7000个字节需要2个簇)。使用最佳分配策略找到2个连续的空闲簇722和723号,将其对应的bit置1,更新$DATA属性中的簇地址,修改MFT项,所以更新文件的最后修改时间值。
  6. 为其添加文件名项。访问5号MFT项的根目录,定位“子目录1”。读取索引根属性($INDEX_ROOT)和索引分配属性($INDEX_ALLOCATION),在倒置树中分类寻找,找到”子目录1”的索引项,它的MFT项地址为200,更新目录的最后访问时间。
  7. 跳转到200号MFT项,访问它的索引根属性($INDEX_ROOT),寻找将为file.txt分配的空间,为其建立一个新的索引项,重新对倒置树进行分为。新索引项的文件参考号地址是400号MFT项。设置相应的时间和标志。更新目录的最后写入,最后修改,最后访问时间值。
  8. 在前面的每一步中,在文件日志中建立项并将改变记入\$Extend\$UsrJrnl。如果设置了配额管理,将新文件的大小记入用户的的配额中(\$Extend\$Quota)

0 篇笔记 写笔记

NTFS 创建文件
假如我们要建立一个文件 “子目录1file.txt”,假设”子目录1”已经存在于根目录,是建立的file文件大小为7000个字节,每个簇大小为4096字节。读取文件第一个扇区的引导扇区,获取簇大小,MFT的起始位置以及每个MFT项的大小。读取第一个MFT项,即$MFT文件的MFT项,由它的$DA......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!