NTFS文件系统
+ -

NTFS文件系统索引根属性

2021-07-01 371 0

NTFS 索引根属性($INDEX_ROOT)的类型值为0X90.

每个文件都有索引根属性,它是为实现索引而设置的B+树的根节点,包含存储在其中的文件或子目录的相关信息。

如果一个目录比较大,还需要用到$INDEX_ALLOCATION属性(索引分配属性)和$BITMAP属性(位图属性)

目录除了具有$INDEX_ROOT属性外,还可拥有$DATA属性,即目录内即可以存储文件和子目录列表,也可以存储文件内容,因为存放在其中的文件的$DATA属性可以存储在任何它可以容纳得下的程序或用户数据。

目录的$INDEX_ROOT属性和$INDEX_ALLOCATION属性名通常为”$I30”

  • 索引采用树状结构,树有很多的节点,每个节点包含一个或几个索引项。
  • 树的根部位于索引根属性($INDEX_ROOT),且只能容纳少量的索引项。
  • 根索引属性有一个16个字节的头结构,跟在其后的是节点头和索引项列表。其它节点在索引分配属性($INDEX_ALLOCATION)中描述它们的索引记录。
  • 位图属性管理索引记录的分配情况。

索引头结构

字节偏移 字节数 含 义
00~03 4 索引的属性类型
04~07 4 分类规则
08~0b 4 每个索引记录的大小(字节数)
0c 1 每个索引记录的大小簇数
0d~0f 3 未用
10~ 节点头

索引节点头

字节偏移 字节数 含 义
00~03 4 索引项列表起始偏移(相对于节点头起始处)
04~07 4 索引项列表已用部分的结尾偏移(相对于节点头起始处)
08~0b 4 索引项列表缓冲区的结尾偏移(相对于节点头起始处)
0C~0F 4 村志,如果有其它节点指向该节点,此值为0x01

索引项

字节偏移 字节数 含 义
00~07 8 未定义(目录索引中用于记录文件的MFT文件参考号)
08~09 2 本索引项的长度(从索引项起始处)
0a~0b 2 内容长度(目录索引中用于记录文件名属性长度)
0c~0d 2 标志
0x01-有子节点
02-为列表的最后一项
0e~0f 2 未使用
10~ 0或8 索引分配中的子节点的VCN(只有当标志为有子节点才使用)

目录索引项

目录索引项用于索引至文件或目录名,它的数据结构如下:

字节偏移 字节数 含 义
00~07 8 该文件名所在的MFT的文件参考号
08~09 2 本索引项的长度(从索引项的起始处)
0A~0B 2 文件名属性长度
0C~0D 2 标志
0x01-有子节点
02-为列表的最后一项
0E~0F 2 未使用
10~ 0A~0B处的值大于0时 8字节:父目录的MFT文件参考号
8字节:文件创建时间
8字节:文件最后修改时间
8字节:文件MFT最后改变时间
8字节:最后访问时间
8字节:文件实际大小
8字节:为文件存储分配的大小
8字节:标志
1字节:文件名长度
1字节:文件名命名空间
~字节:文件名
项的最后8字节起始于一个8字节边界 索引分配中的子节点VCN(只有当标志为有子节点时才使用)

0 篇笔记 写笔记

NTFS文件系统索引根属性
NTFS 索引根属性($INDEX_ROOT)的类型值为0X90.每个文件都有索引根属性,它是为实现索引而设置的B+树的根节点,包含存储在其中的文件或子目录的相关信息。如果一个目录比较大,还需要用到$INDEX_ALLOCATION属性(索引分配属性)和$BITMAP属性(位图属性)目录除了具......
作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

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

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