NTFS文件系统-MFT的属性头
2016-07-07 12:49
253 查看
前面说过MFT是有一个个属性组成,那么每个属性的具体结构又是如何呢?MFT属性的类型很多,但它们都有个共同的特点,那就是每个属性都有属性头和属性体。属性头又分为常驻属性和非常驻属性。常驻属性和非常驻数据最大的区别是常驻属性的只是在MFT内部记录,非常驻数据由于MFT记录不下(一个MFT项只有1024)所以需要在其它数据区记录。不管是常驻属性还是非常驻属性,它的属性头的前面16个字节是一样的。
MFT属性结构图
![](http://s3.51cto.com/wyfs02/M01/83/D6/wKiom1d92ujwQtkaAAZ7bE8h8jc381.jpg-wh_500x0-wm_3-wmp_4-s_565655920.jpg)
从上图可以看出MFT头很小,只有几行代码 ,剩下都是MFT的属性。图中10属性和30属性都是常驻属性,而80属性是非常驻属性 ,因为80属性是记录文件内容的属性,一般不是几个字节就能记录的。下面我们来看下非常驻属性的属性头具体结构
非常驻属性头的数据结构
非常驻属性头的最后3个参数都表示属性内容的大小, 这里可以写成一样大的。
MFT属性结构图
![](http://s3.51cto.com/wyfs02/M01/83/D6/wKiom1d92ujwQtkaAAZ7bE8h8jc381.jpg-wh_500x0-wm_3-wmp_4-s_565655920.jpg)
从上图可以看出MFT头很小,只有几行代码 ,剩下都是MFT的属性。图中10属性和30属性都是常驻属性,而80属性是非常驻属性 ,因为80属性是记录文件内容的属性,一般不是几个字节就能记录的。下面我们来看下非常驻属性的属性头具体结构
偏移字节(16进制) | 描述 |
00-03 | 属性类型 |
04-07 | 属性长度 |
08 | 常驻属性标志00:常驻 ;01表示非常驻 |
09 | 属性名长度(为0表示没有属性名) |
0A-0B | 属性名偏移(相对于属性头) |
0C-0D | 标志 |
0E-0F | 属性ID标志 |
10-13 | 属性体大小 |
14-15 | 属性头的大小 |
16 | 索引 |
17 | 保留 |
偏移字节(16进制) | 描述 |
00-03 | 属性类型 |
04-07 | 属性长度 |
08 | 常驻属性标志00:常驻 ;01表示非常驻 |
09 | 属性名长度(为0表示没有属性名) |
0A-0B | 属性名偏移(相对于属性头) |
0C-0D | 标志 |
0E-0F | 属性ID标志 |
10-17 | 簇流的起始虚拟簇号(总是从0开始) |
18-1F | 簇流的结束虚拟簇号 |
20-21 | 簇流列表相对本属性头起始处偏移 |
22-23 | 压缩单位大小 |
24-27 | 保留 |
28-2F | 为属性内容分配的空间大小字节数 |
30-37 | 属性内容实际占用的大小字节数 |
38-3F | 属性内容初始大小字节数 |
相关文章推荐
- DOM2非标准但却支持很好的几个属性小结
- Ruby简洁学习笔记(二):类继承、属性、类变量
- 举例讲解C#中自动实现的属性
- Delphi控件ListView的属性及使用方法详解
- C#实现获取不同对象中名称相同属性的方法
- PowerShell中Get-Date对象的常用属性和方法介绍
- Windows Powershell属性:描述对象是什么
- 详解C#中的属性和属性的使用
- 轻松学习C#的属性
- DIV+CSS经常用到的属性、参数及说明
- CSS 关于网页图片的属性
- Android中persistent属性用法详解
- C#实现ProperTyGrid自定义属性的方法
- C#属性(Attribute)用法实例解析
- C#使用shell32获取文件属性的方法
- JavaScript对象、属性、事件手册集合方便查询
- JavaScript原生对象之Number对象的属性和方法详解
- jQuery Attributes(属性)的使用(二、类篇)
- JavaScript常用对象的方法和属性小结
- 详解 javascript中offsetleft属性的用法