找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 17318|回复: 0

【操作系统】FAT文件系统(FAT12,FAT16,FAT32)DBR扇区结构的详细说明

[复制链接]

1110

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24221 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2014-1-29 13:29:29 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
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
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-19 03:41 , Processed in 0.036061 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表