FAT32文件系统的DBR与FAT16的DBR很类似,也由5部分组成,分别为跳转指令、OEM代号、BPB、引导程序和结束标志,图4-286所示是一个完整的FAT32文件系统的DBR。
跳转指令本身占用2字节,它将程序执行流程跳转到引导程序处,比如当前DBR中的“EB 58”,就是代表汇编语言的“JMP 58”。需要注意该指令本身占用2字节,计算跳转目标地址时以该指令的下一字节为基准,所以实际执行的下一条指令应该位于5A。紧接着跳转指令的是一条空指令NOP(90H)。
这部分占8字节,其内容由创建该文件系统的OEM厂商具体安排。当前DBR中的OEM代号为“MSDOS5.0”,说明这个FAT32分区是由微软的Windows 2000以上的操作系统格式化创建的。
FAT32的BPB从第DBR的第12(0BH偏移处)个字节开始,占用79字节,记录了有关该文件系统的重要信息,其中各个参数的含义见表4-25。
表4-25 FAT32的BPB参数
这些参数也可以使用WinHex中的模板来查看,WinHex的模板管理器中提供FAT32的DBR模板。打开WinHex的模板管理器,选择FAT32的DBR模板,如图4-287所示。
双击模板后就可以查看FAT32的DBR信息了,如图4-288所示。
下面对这些参数作详细分析。
(1)0BH~0CH:每扇区字节数
记录每个逻辑扇区的大小,一般为512字节,但512并不是固定值,该值可以由程序定义,合法值包括512、1024、2048和4096字节。
(2)0DH~0DH:每簇扇区数
每簇扇区数记录着文件系统的簇大小,即由多少个扇区组成一个簇。
FAT32最大支持128扇区的簇。
在FAT32文件系统中所有的簇从2开始进行编号,每个簇都有一个自己的地址编号,并且所有的簇都位于数据区内,在数据区之前是没有簇的。
(3)0EH~0FH:DBR保留扇区数
DBR保留扇区数是指DBR本身占用的扇区以及其后保留扇区的总和,也就是DBR到FAT1之间的扇区总数,或者说是FAT1的开始扇区号。
对于FAT32文件系统来说,该值的取值范围是32扇区到38扇区之间。
(4)10H~10H:FAT个数
FAT个数描述了该文件系统中有几个FAT表,一般在FAT文件系统中都有两个FAT,即FAT1和FAT2,FAT2是FAT1的备份。
(5)11H~12H:未用
这两个字节在FAT16中用来表示FDT中最大所能容纳的目录项数,FAT32没有固定的FDT,所以不用这个参数。
(6)13H~14H:未用
这两个字节在FAT16中用来表示小于32MB的分区的扇区总数,FAT32的总是大于32MB,所以不用这个参数。
(7)15H~15H:介质描述符
介质描述符是描述磁盘介质的参数,根据磁盘性质的不同,取不同的值。具体取值见表4-21。
(8)16H~17H:未用
这两个字节在FAT16中用来表示每个FAT表包含的扇区数,FAT32不用这个位置。
(9)18H~19H:每磁道扇区数
这是逻辑C/H/S中的一个参数,其值一般为63。
(10)1AH~1BH:磁头数
这也是逻辑C/H/S中的一个参数,其值一般为255。
(11)1CH~1FH:隐藏扇区数
隐藏扇区数是指本分区之前使用的扇区数,该值与分区表中所描述的该分区的起始扇区号一致。对于主磁盘分区来讲,是MBR到该分区DBR之间的扇区数;对于扩展分区中的逻辑驱动器来讲,是其EBR到该分区DBR之间的扇区数。
(12)20H~23H:扇区总数
扇区总数是指分区的总扇区数,也就是FAT32分区的大小。
(13)24H~27H:每FAT扇区数
这四个字节用来记录FAT32分区中每个FAT表占用的扇区数。
(14)28H~29H:标志
这两个字节用于表示FAT2是否可用,当其二进制最高位置1时,表示只有FAT1可用,否则FAT2也可用。
(15)2AH~2BH:版本
这两个字节通常都为0。
(16)2CH~2FH:根目录首簇号
分区在格式化为FAT32文件系统时,格式化程序会在数据区中指派一个簇作为FAT32的根目录区的开始,并把该簇号记录在BPB中。通常都是把数据区的第一个簇分配给根目录使用,也就是2号簇。
(17)30H~31H:文件系统信息扇区号
FAT32文件系统在DBR的保留扇区中安排了一个文件系统信息扇区,用以记录数据区中空闲簇的数量及下一个空闲簇的簇号,该扇区一般在分区的1号扇区,也就是紧跟着DBR后的一个扇区,其内容如图4-289所示。
该扇区具体结构参数见表4-26。
表4-26 文件系统信息扇区的参数
字节偏移 | 字段长度(字节) | 字段内容及含义 |
---|---|---|
0x00 | 4 | 扩展引导标签“52 52 61 41” |
0x04 | 480 | 未用 |
0x1E4 | 4 | 文件系统信息签名“72 72 41 61” |
0x1E8 | 4 | 空闲簇数 |
0x1EC | 4 | 下一个空闲簇的簇号 |
0x1F0 | 14 | 未用 |
0x1FE | 2 | 结束标志“55 AA” |
文件系统信息扇区的参数模板如图4-290所示。
(18)32H~33H:DBR备份扇区号
FAT32文件系统在DBR的保留扇区中安排了一个DBR的备份,一般在6号扇区,也就是分区的第7个扇区。该备份扇区与原DBR扇区的内容完全一样,如果原DBR遭到破坏,可以用备份扇区修复。
(19)34H~3FH:未用
这12个字节保留不用。
(20)40H~40H:BIOS驱动器号
这是BIOS 的INT 13H所描述的设备号码,一般把硬盘定义为8xH。
(21)41H~41H:未用
这一个字节不使用,为0。
(22)42H~42H:扩展引导标记
扩展引导标记用来确认后面的三个参数是否有效,一般值为29H。
(23)43H~46H:卷序列号
卷序列号是格式化程序在创建文件系统时生成的一组4字节的随机数值。
(24)47H~51H:卷标
卷标是由用户在创建文件系统时指定的一个卷的名称,原来的系统把卷标记录在这个地址处,现在的系统已经不再使用这个地址记录卷标,而是由一个目录项来管理卷标。
(25)52H~59H:文件系统类型
BPB的最后一个参数,直接用ASCII码记录当前分区的文件系统类型。
FAT32的DBR引导程序占用420字节(5AH~1FDH),在Windows 98之前的系统之下,这段代码负责完成DOS三个系统文件的装入,在Windows 2000之后的系统中,其负责完成将系统文件NTLDR装入,对于一个没有安装操作系统的分区来讲,这段程序没有用处。
DBR的结束标志与MBR、EBR的结束标志都相同,为“55 AA”。
以上5个部分共占用512字节,正好是一个扇区,因此称它为DOS引导扇区。该部分的内容中除了第5部分结束标志是固定不变之外,其余4个部分都是不完全确定的,都因操作系统版本的不同而不同,也因硬盘的逻辑盘参数的变化而变化。