FAT 32 文件格式
一、 DBR ( Dos Boot Record )
1 :相对跳转指令
2 :一个扇区的大小 0x0200[512byte]
3 :一个簇的扇区数 0x08
4 : FAT 表的开始位置 0x0020[32 扇区 ]
5 : FAT 表的个数 0x02
6 : FAT 的 扇区数 0x00161B
二、 FAT 表
FAT 位置计算公式: FAT 开始位置 [0x0020]* 扇区大小 [0x0200]=0x4000
0~1 : FAT 表的标志位
2 : 2 簇的使用状况 [2 簇一般存储的是根目录 ]
3 : 3 簇的使用状况
FAT 表的内容:
0x00000000 : 未使用
0x0ffffff8 :以上的时候数据区终了
0x0ffffff7 :异常区
0x00000002 ~ 0x0ffffff6 :下一个存储区域的簇号
三、 数据区
数据区位置的计算公式: FAT 开始位置 [0x0020]* 扇区大小 [0x0200] + FAT 表个数 [0x02]*FAT 表中扇区数 [0x00161B] = 0x58AC00
1、 目录区
1 :文件名(当第一位为 E5 时,表示已被删除)
2 :扩展名
3 :文件属性(最高两位保留未用, 0 至 5 位分别是只读位、隐藏位、系统位、卷标位、子目录位、归档位)(当为 0F 时表示存储的长文件名)
4 :创建时间的 10 毫秒位
5 :文件创建时间( H*2048 + M*32 + S/2 )
6 :文件创建日期(( Y - 1980 ) *512 + M*32 + D )
7 :文件最后访问日期
8 :文件起始簇号的高 16 位
9 :文件最近修改时间
10 :文件最近修改日期
11 :文件起始簇号的低 16 位
12 :文件的长度
2、 文件区
保存文件的内容
3、 例
文件簇号 [0x00000003] ,对应的 FAT 表的内容为 [0xFFFFFF0F] ,所以 setting 目录中的文件信息只保存在簇 3 中。如果对应 FAT 表的内容为其它值,如 [0x00000004] ,就表示,簇 4 中也存储的是 setting 目录中的文件信息。知道找到表示结束符 [0xFFFFFF0F] 。