FAT32 的 BPB 的内容和 FAT12/16 的内容在地址 0x36 以前是完全一样的,从偏移量 0x36开始,他们的内容有所区别,具体的内容要看 FAT 类型为 FAT12/16 还是 FAT32,这点保证了 在启动扇区中包含一个完整的 FAT12/16 或 FAT32 的 BPB 的内容,这么做是为了达到最好的兼容性,同时也为了保证所有的 FAT 文件系统驱动程序能正确的识别和驱动不同的 FAT 格式,并 让他们良好地工作,因为他们包含了现有的全部内容从 offset 36 开始 FAT12/FAT16 的内容开始区别于 FAT32,下面分两个表格列出,下 表为 FAT12/FAT16 的内容下表为 FAT32 的内容
名称
|
offset
|
长度
|
描述
|
|
(byte)
|
(byte)
|
|
BPB_FATSz32
|
0x24
|
4
|
一个 FAT 表所占的扇区数,此域为 FAT32 特有,同时
|
|
|
|
BPB_FATSz16 必须为 0
|
BPB_Flags
|
0x28
|
2
|
此域 FAT32 特有。
|
|
|
|
Bits0-3:不小于 0 的 FAT(active FAT)数目,只有
|
|
|
|
在镜像(mirrorig)禁止时才有效。
|
|
|
|
Bits 4-6: 保留
|
|
|
|
Bits 7: 0 表示 FAT 实时镜像到所有的 FAT 表中
|
|
|
|
1 表示只有一个活动的 FAT 表。这个表就是
|
|
|
|
Bits0-3 所指定的那个
|
|
|
|
Bits8-15: 保留
|
BPB_FSVer
|
0x2A
|
2
|
此域为 FAT32 特有,
|
|
|
|
高位为 FAT32 的主版本号,低位为次版本号,这个版本
|
|
|
|
号是为了以后更高级的 FAT 版本考虑,假设当前的操作
|
|
|
|
系统只能支持的 FAT32 版本号为 0.0。那么该操作系统
|
|
|
|
检测到此域不为 0 时,它便会忽略 FAT 卷,因为它的版
|
|
|
|
本号比系统能支持的版式本要高
|
|
|
|
|
BPB_RootClus
|
0x2C
|
4
|
根目录所在第一个簇的簇号,通常该数值为 2,但不是必
|
|
|
|
须为 2
|
|
|
|
磁盘工具在改变根目录位置时,必须想办法让磁盘上第一
|
|
|
|
个非坏簇作为根目录的第一个簇(比如第 2 簇,除非它
|
|
|
|
已经被标记为坏簇),这样的话,如果此域正好为 0 的
|
|
|
|
话磁盘检测工具也能轻松的找到根目录所在簇的位置
|
|
|
|
|
BPB_FSIfo
|
0x30
|
2
|
保留区中 FAT32 卷 FSINFO 结构所占的扇区数,通常为
|
|
|
|
1
|
|
|
|
在 Backup Boot 中会有一个 FSINFO 的备份,但该备
|
|
|
|
份只是更新其中的指针,也就是说无论是主引导记录还是
|
|
|
|
备份引导记录都是指向同一个 FSINFO 结构
|
BPB__BkBootSec
|
0x32
|
2
|
如果不为 0,表示在保留区中引导记录的备数据所占的扇
|
|
|
|
区数,通常为 6。同时不建议使用 6 以外的其他数值
|
BPB_Reserved
|
0x34
|
12
|
用于以后 FAT 扩展使用,对 FAT32。此域用 0 填充
|
BS_DrvNum
|
0x40
|
1
|
与 FAT12/16 的定义相同,只不过两者位于启动扇区不
|
|
|
|
同的位置而已
|
|
|
|
|
BS_Reserved1
|
0x41
|
1
|
与 FAT12/16 的定义相同,只不过两者位于启动扇区不
|
|
|
|
同的位置而已
|
|
|
|
|
BS_BootSig
|
0x42
|
1
|
与 FAT12/16 的定义相同,只不过两者位于启动扇区不
|
|
|
|
同的位置而已
|
|
|
|
|
BS_VolID
|
0x43
|
4
|
与 FAT12/16 的定义相同,只不过两者位于启动扇区不
|
|
|
|
同的位置而已
|
|
|
|
|
BS_FilSysType
|
0x47
|
11
|
与 FAT12/16 的定义相同,只不过两者位于启动扇区不
|
|
|
|
同的位置而已
|
|
|
|
|
BS_FilSysType
|
0x52
|
8
|
通常设置为“FAT32”,请参照 FAT12/16 此部分的陈
|
|
|
|
述。
|
|