NTFS 索引根属性

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(只有当标志为有子节点时才使用)
  • USB基础
  • USB摄像头UVC
  • USB人机交互HID
  • USB音频UAC
  • Windows基础
  • 磁盘与文件系统
  • Windows编程
  • Windows驱动
  • 开发模块
  • Windows运维
  • Linux相关
  • C语言学习
  • 高级语言
  • 前端开发
  • 服务器开发
  • 数据库
  • 字节流笔记
  • 字节流
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

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

    Powered by bytekits.com,汇天下文字,成非凡梦想!!!