FAT32详解
1. FAT32文件系统由DBR及其保留扇区,FAT1,FAT2和DATA四个部分组成, 如下图所示
DBR及其保留扇区:DBR的含义是DOS引导记录,也称为操作系统引导记录,在DBR之后往往会有一些保留扇区。
FAT1:FAT的含义是文件分配表,FAT32一般有两份FAT,FAT1是第一份,也是主FAT。
FAT2:FAT2是FAT32的第二份文件分配表,也是FAT1的备份。
DATA:DATA也就是数据区,是FAT32文件系统的主要区域,其中包含目录区域。
1-1. FAT32文件系统的DBR有3部分组成,分别为BPB(包含跳转指令,OEM代号),引导程序和结束标志, 如下图所示。
首先,最开始的3各字节的数据分别是跳转指令与空指令EB 58 90
,因为在汇编当中0xEB是跳转指令,0x58是跳转的地址,而0x90则是空指令。所以,EB 58 90 对应汇编代码即为JUMP 0x58; NOP;。
而从0x6D 6B 64 6F 73 66 73 00
这8个字节的数据表示OEM (由各厂商设置)。
我们把地址从0x000B开始的79个字节的数据叫做BPB(BIOS Paramter Block),关于BPB的详细说明请参见下表
偏移量 | 字节数 | 含义 | 值 |
---|---|---|---|
0x00B | 2 | 每扇区字数 | 0x0200 |
0x00D | 1 | 每簇扇区数 | 0x08 |
0x00E | 2 | 保留扇区数 | 0x0006 |
0x010 | 1 | FAT个数 | 0x02 |
0x011 | 2 | 根目录项数,FAT32以突破该限制,无效 | 0x0000 |
0x013 | 2 | 扇区总数,小于32M使用 | 0x0000 |
0x015 | 1 | 存储介质描述符 | 0x0F8 |
0x016 | 2 | 每FAT表占用扇区数 ,小于32M使用 | 0x0000 |
0x018 | 2 | 逻辑每磁道扇区数 | 0x0010 |
0x01A | 2 | 逻辑磁头数 | 0x0004 |
0x01C | 4 | 系统隐含扇区数 | 0x00000000 |
0x020 | 4 | 扇区总数,大于32M使用 | 0x0066d001 |
0x024 | 4 | 每FAT表扇区数,大于32M使用 | 0x000019A8 |
0x028 | 2 | 标记 | 0x0000 |
0x02A | 2 | 版本 (通常为零) | 0x0000 |
0x02C | 4 | 根目录起始簇 | 0x00000002 |
0x030 | 2 | Boot占用扇区数 | 0x0001 |
0x032 | 2 | 备份引导扇区位置 | 0x0003 |
0x034 | 14 | 保留 | 14个字节的0x00 |
0x042 | 1 | 扩展引导标记 | 0x29 |
0x043 | 4 | 序列号 | 0x60F15F00 |
0x047 | 10 | 卷标 | 转成字符即“NO NAME” |
0x052 | 8 | 文件系统 | 转成字符即“FAT32” |
代码中的定义如下: