【操作系统】FAT文件系统(FAT12,FAT16,FAT32)DBR扇区结构的详细说明
FAT12、FAT16的DBR相同(以下称为FAT)。FAT32的DBR不一样。FAT格式:
_________________________________________________________________________________
|偏移 意义 |大小 |解释 |
|0x00: JMP指令 |3字节 |SHORT跳转的话,是一个JMP一个NOP。 |
|0x03: OEM标识 |8字节 |比如MSDOS5.0等字符串。 |
|0x0B: 每个扇区的字节数|2字节 |如:0x0200。 |
|0x0D: 每个簇的扇区数 |1字节 |如:0x01。 |
|0x0E: 保留扇区数 |2字节 |从分区开始到第一个FAT之前的扇区数。 |
|_______________________|_______|_______________________________________________|
|0x10: FAT的数量 |1字节 |一般为2 |
|0x11: 根目录最大项数 |2字节 |根目录文件(夹)个数上限。 |
|0x13: 分区总扇区数 |2字节 |这个分区的总大小。 |
|0x15: 介质类型 |1字节 |介质类型,如“软盘”“硬盘”。 |
|0x16: 每FAT扇区数 |2字节 |单个FAT占用的扇区数。 |
|0x18: 每磁道扇区数 |2字节 |每个磁道的扇区数。 |
|0x1A: 磁头数 |2字节 |磁头的总数。 |
|0x1C: 隐藏扇区数 |4字节 |DBR前面的扇区数,也就是分区前的扇区数。 |
|_______________________|_______|_______________________________________________|
|0x20: 保留不用 |4字节 |FAT32的分区总扇区数。 |
|0x24: 驱动器数 |1字节 |驱动器的数量。 |
|0x25: 当前磁头 |1字节 |当前使用的磁头。 |
|_______________________|_______|_______________________________________________|
|0x26: 磁盘扩展参数块 |24字节 |磁盘扩展参数块。 |
|0x3E: 引导指令 |* |引导指令。 |
|0x1FE: 可引导标识 |2字节 |0xAA55 |
|_______________________|_______|_______________________________________________|
FAT32格式:
_________________________________________________________________________________
|偏移 意义 |大小 |解释 |
|0x00: JMP指令 |3字节 |SHORT跳转的话,是一个JMP一个NOP。 |
|0x03: OEM标识 |8字节 |比如MSDOS5.0等字符串。 |
|0x0B: 每个扇区的字节数|2字节 |如:0x0200。 |
|0x0D: 每个簇的扇区数 |1字节 |如:0x01。 |
|0x0E: 保留扇区数 |2字节 |从分区开始到第一个FAT之前的扇区数。 |
|_______________________|_______|_______________________________________________|
|0x10: FAT的数量 |1字节 |一般为2。 |
|0x11: 保留不用 |4字节 |FAT12、16的根目录项数、分区总扇区数,此处为0。 |
|0x15: 介质类型 |1字节 |介质类型,如“软盘”“硬盘”。 |
|0x16: 保留不用 |2字节 |FAT12、16的每FAT扇区数,此处为0。 |
|0x18: 每磁道扇区数 |2字节 |每个磁道的扇区数。 |
|0x1A: 磁头数 |2字节 |磁头的总数。 |
|0x1C: 隐藏扇区数 |4字节 |DBR前面的扇区数,也就是分区前的扇区数。 |
|_______________________|_______|_______________________________________________|
|0x20: 分区总扇区数 |4字节 |分区总扇区数。 |
|0x24: 单个FAT扇区数 |4字节 |单个FAT占用的扇区数。 |
|0x28: FAT是否非镜像 |2字节 |FAT是否镜像。0:镜像(两FAT一致)1:非镜像 |
|0x2A: 版本号 |2字节 |可以为0。 |
|0x2C: 根目录起始簇 |4字节 |根目录的起始位置。FAT32的根目录不固定 |
|_______________________|_______|_______________________________________________|
|0x30: FSInfo的扇区号 |2字节 |以扇区为单位。 |
|0x32: DBR备份的扇区号 |2字节 |以扇区为单位,另一个DBR的备份。 |
|0x34: 保留未用 |12字节 |全为0。 |
|_______________________|_______|_______________________________________________|
|0x40: BIOS的设备ID |2字节 |也就是用INT 0x13访问此驱动器的时候指定的ID号。 |
|0x42: 磁盘扩展参数块 |24字节 |磁盘扩展参数块。 |
|0x5A: 引导指令 |* |引导指令。 |
|0x1FE: 可引导标识 |2字节 |0xAA55 |
|_______________________|_______|_______________________________________________|
磁盘扩展参数块格式:
_________________________________________________________________________________
|偏移 意义 |大小 |解释 |
|0x00: 扩展参数块标识 |1字节 |值为0x29 |
|0x01: 分区ID |4字节 |随机数,用于区分硬盘。 |
|0x05: 卷标 |11字节 |卷标,也就是驱动器的“名字”、“标签” |
|0x10: 文件系统类型 |8字节 |值为“FAT12”、“FAT16”、“FAT32” |
|_______________________|_______|_______________________________________________|
FSInfo扇区格式:
_________________________________________________________________________________
|偏移 意义 |大小 |解释 |
|0x00: FSInfo标识 |4字节 |值为“RRaA”,0x41615252。 |
|0x04: 保留不用 |480字节|全为0。 |
|0x1E4: FSInfo标识2 |4字节 |值为“rrAa”,0x61417272。 |
|0x1E8: 空闲簇数 |4字节 |统计目前空闲可用的簇数,计算磁盘剩余容量可用。 |
|0x1EC: 下一可用簇号 |4字节 |下一个可用的簇号。 |
|0x1F0: 保留不用 |14字节 |全为0。 |
|0x1FE: 可引导标识 |2字节 |0xAA55 |
|_______________________|_______|_______________________________________________|
参考资料:
http://www.0xaa55.com/thread-5-1-1.html
页:
[1]