FAT12引导扇区格式及根目录区条目格式

       几乎所有的文件系统都会把磁盘划分为若干层次以方便组织和管理,这些层次包括:
       ①扇区(Sector):磁盘上的最小数据单元。
       ②簇(Cluster):一个或多个扇区。
       ③分区(Partition):通常指整个文件系统。

       FAT12各区分布情况:FAT12引导扇区格式及根目录区条目格式

       FAT12引导扇区格式(其中名称以BPB_开头的域属于BPB(BIOS ParameterBlock),以BS_开头的域不属于BPB,只是引导扇区(Boot Sector)的一部分):

名称 偏移 长度 内容
BS_jmpBoot 0 3 一个短跳转指令
BS_OEMName 3 8 厂商名
BPB_BytsPerSec 11 2 每扇区字节数
BPB_SecPerClus 13 1 每簇扇区数
BPB_RsvdSecCnt 14 2 Boot记录占用多少扇区
BPB_NumFATs 16 1 共有多少FAT表
BPB_RootEntCnt 17 2 根目录文件数(条目数)最大值
BPB_TotSec16 19 2 扇区总数
BPB_Media 21 1 介质描述符
BPB_FATSz16 22 2 每FAT扇区数
BPB_SecPerTrk 24 2 每磁道扇区数
BPB_NumHeads 26 2 磁头数(面数)
BPB_HiddSec 28 4 隐藏扇区数
BPB_TotSec32 32 4 如果BPB_TotSec16是0,由这个值记录扇区数
BS_DrvNum 36 1 中断13的驱动器号
BS_Reservedl 37 1 未使用
BS_BootSig 38 1 扩展引导标记(29h)
BS_VolID 39 4 卷***
BS_VolLab 43 11 卷标
BS_FileSysType 54 8 文件系统类型
引导代码及其他 62 448 引导代码、数据及其他填充字符等
结束标志 510 2 0xAA55

       根目录区位于第二个FAT表之后,开始的扇区号为19,它由若干个目录条目(Directory Entry)组成,条目最多有BPB_RootEntCnt个。由于根目录区的大小是依赖于BPB_RootEntCnt的,所以长度不固定,根目录区中的每一个条目占用32字节。

根目录区中的条目格式:

名称 偏移 长度 描述
DIR_Name 0 0xB 文件名8字节,扩展名3字节
DIR_Attr 0xB 1 文件属性
保留位 0xC 10 保留位
DIR_WrtTime 0x16 2 最后一次写入时间
DIR_WrtDate 0x18 2 最后一次写入日期
DIR_FstClus 0x1A 2 此条目对应的开始簇号
DIR_FileSize 0x1C 4 文件大小

       比较重要的就是DIR_FstClus|0x1A这一项,它告诉我们文件存放在磁盘的什么位置,从而让我们可以找到它。软盘中一簇只包含一个扇区。数据区的第一个簇的簇号是2,而不是0或者1。