NTFS中的根目录是一个普通的目录,如果卷有一个重解析点,那么根目录就会有一个命名数据流,称作$MountMgrDatabase;如果卷没有重解析点,则没有这个命名数据流。
元文件$Root是用来管理根目录的,其文件名实际上是“.”,它包含6个属性,如图4-456所示。
图4-456 根目录的文件记录
(1)10H属性
10H属性定义了根目录创建的时间、最后修改时间、该MFT修改时间、该文件最后访问时间、文件标志(此处值为26H,表示其为存档、隐藏、系统文件)等信息。
(2)30H属性
30H属性定义了根目录的父目录的文件参考号为根目录本身、根目录的一些时间属性、系统分配给根目录的大小(这里为0字节)、实际使用的大小(这里为0字节);定义了文件的标志为10000006H,表示其为目录、存档、隐藏、系统文件;并定义了该文件的文件名长度为1个字符,命名空间为3;在属性的最后定义了该文件的文件名为Unicode字符串“.”。
(3)50H属性
50H属性定义了该文件的安全信息。
(4)80H类型属性
80H属性只有当卷有重解析点时才有,本例中并没有该数据流。当卷上有一个重解析点时根目录文件就会有一个名字为“$MountMgrDatabase”的命名数据流,它由一些重复的组组成,见表4-81。
表4-81 $MountMgrDatabase数据流
字节偏移 | 字段长度(字节) | 描述 |
0x00 | 4 | 入口大小 |
0x04 | 4 | 标志 |
0x08 | 2 | UNC路径偏移 |
0x0A | 2 | UNC路径大小 |
0x0C | 2 | 数据偏移 |
0x0E | 2 | 数据大小 |
(5)90H属性
90H属性是索引根属性,为非常驻属性,属性名为“$I30”,表示其为文件名索引。属性中定义了90H属性的索引属性类型为30H,也就是30H类型的索引;定义了单位字节的索引分配的大小(这里为1000H)、每索引记录的簇数(这里为01)等。
(6)A0H属性
根目录的索引分配属性定义了根目录索引缓冲区的开始VCN和结束VCN,以及数据流的起始LCN和占用的簇数。本例中根目录索引缓冲区开始于4014H簇,占一个簇。根目录A0H属性的数据流是一些索引项的集合。
(7)B0H属性
根目录的B0属性被命名为“$I30”,表示其为目录。该属性是由一系列的位构成的虚拟簇使用情况表,它标记了根目录哪些虚拟簇已被使用。当前属性的属性体为“01H”,也就是说只占用了0号VCN一个簇。