FAT32中文版分析+补充(1)
来源:互联网 发布:手机上网域名被劫持 编辑:程序博客网 时间:2024/05/29 13:52
概述
0——保留区(Reserved Region);
1——FAT区(FAT Region);
2——根目录区(Root Directory Region,FAT32卷没有此域);
3——文件和目录数据区(File and Directory Region)
启动扇区与BPB
NOTE:在以下的描述中,凡是名称与BPB_开头的域都是BPB的一部分,凡是名称与BS_开头的项都是启动扇区(bootsector)的一部分,而不是真正属于BPB内容。下面是FAT 0扇区的内容,BPB也包含其中。
字节位移
字段长度
字段名
0x00
3个字节
跳转指令
0x03
8个字节
厂商标志和OS版本号
0x0B
53个字节
BPB
0x40
26个字节
扩展BPB
0x5A
420个字节
引导程序代码
0x01FE
2个字节
有效结束标志
名称
Offset(Byte)
大小(Byte)
描述
BS_jmpBoot
(跳转指令)
0
3
BS_OEMName
(OEM、OS版本号)
3
8
(厂商标志和OS版本号)
BPB_BytesPersec
(每扇字节数)
11
2
每扇区字节数,取值只能是以下的几种情况:512、1024、2048或者是4096,一般情况下,设置为512将会取得更好的兼容性,目前有很多的FAT代码都是硬性的规定每扇区字节数为512,而不是实际检测该区域的值。Microsoft操作系统能够很好地支持1024、2048和4096各种数值。NOTE:请不要曲解此处“最好的兼容性”的意思,如果某些存储介质的物体特性决定其值为N,那么你就必须使用该数值N,该数值N一定是小于等于4096。那么取得“最好的兼容性”的办法就是使用该特定的N值。
BPB_SecPerClus
(每簇扇区数)
13
1
每簇扇区数,其值必须是2的整数次方(该整数必须大于等于0),如1、2、4、8、16、32、64或128,同时还必须保证每簇的字节数不超过32K,即——保证(BPB_BytesPersec *BPB_SecPerClus ≤32K)(1024×32)该值大于32K是绝对不允许的,虽然有些版本的操作系统支持每簇字节数最大到64K,但很多应用程序的安装程序都无法在这样的FAT文件系统上正常运行。BPB_RsvdSecCnt
(保留扇区数)
14
2
保留区中保留扇区的数目,保留扇区从FAT卷的第一个扇区开始,此域不能为0,对于FAT12和FAT16必须为1,FAT32的典型取值为32,目前很多FAT程序都是硬性规定FAT12/FAT16的保留扇区为1,而不对此域进行实际的检测,Microsoft的操作系统支持任何非零的值。BPB_NumFATs
(FAT副本数)
16
1
此卷中FAT表的份数。任何FAT格式此域都建议为2。虽然此域取值为其他≥1的数值也是合法的,但是对于很多FAT程序和部分操作系统来说,此项不为2的时候将无法正常工作。但是当不为2时,Microsoft的操作系统仍然能良好工作。可依然强烈建议此项值为2。选择此项的标准值为2的原因是为了提供一份FAT表的备份,当其中一个FAT表所在的扇区被损坏时我们可以从备份的FAT表中读出正确的数据。可是对于一些非磁盘介质的存储器(如FLASH卡),这一特性变得毫无用处,如果想使用1个FAT表来节省空间,那么带来的问题将是某些操作系统无法识别该FAT卷。
BPB_RootEntCnt
(根目录项数)
17
2
对于FAT12和FAT16,此域中包含根目录中的目录项数(每个项长度为32Kbytes),对于FAT32,此项必须为0。对于FAT12和FAT16,此数值乘以32,必须为BPB_BytesPersec的偶数倍,为了达到更好的兼容性,FAT12/FAT16应该取值为512。BPB_TotSec16
(总扇区数)
19
2
早期版本中16-bit的总扇区数,这里的总扇区数包括FAT卷上四个基本区的全部扇区,此域可以为0,若此域为0,那么BPB_TotSec32必须非0,对于FAT32,此域必须为0。对于FAT12/FAT16,此域填写总扇区数,如果该数值小于0x10000的话,BPB_TotSec32必须为0。BPB_Media
(媒体描述符)
21
1
对于“固定”(不可移动)的存储介质而言,0xF8是标准值,对于可以移动的存储介质,经常使用的数值是0xF0,此域合法的取值可以是0xF0,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE和0xFF。另外要提醒的一点是,无论此域写入什么数值,同时也必须在FAT[0]的低字节写入相同的值,这是因为早期的MSDOS1.x使用该字节来判定是何种存储介质。BPB_FATSz16
(每FAT扇区数)
22
2
FAT12/FAT16一个FAT表所占的扇区数,对于FAT32来说,此域必须为0,在BPB_FATSz32中有指定其FAT表的大小。BPB_SecPerTrk
(每磁道扇区数)
24
2
每磁道扇区数,用于BIOS中断0x13,此域只对于有“特殊形状”(由磁头和柱面分割为若干磁道)的存储介质有效,同时必须可以调用BIOS的0x13中断得到此数值。BPB_NumHeads
(磁头数)
26
2
磁头数,用于BIOS的0x13中断,类似于上面的BPB_SecPerTrk,只有对特殊的介质才有效,此域包含一个至少为1的数值,比如1.4M的软盘,此域为2。BPB_HiddSec
(隐藏扇区数)
28
4
在此FAT分区之前所隐藏的扇区数,必须使用调用BIOS的0x13中断可以得到这个数值,对于那些没有分区的存储介质,此域必须为0,具体使用什么由操作系统决定。BPB_TotSec32
(总扇区数)
32
4
该卷总扇区数(32-bit),这里的总扇区数包括FAT卷上四个基本区的全部扇区,此域可以为0,若此域为0,则BPB_TotSec16必须为非0,对于FAT32,此域一定是非0。对于FAT12/FAT16,如果总扇区数大于或等于0x10000(64KB)的话,此域就是总扇区数,同时BPB_TotSec16的值为0。- FAT32中文版分析+补充(1)
- FAT32中文版分析+补充(2)
- FAT32中文版分析+补充(3)
- FAT32中文版分析+补充(4)
- FAT32中文版分析+补充(5)
- FAT32中文版分析+补充(6)
- FAT32 资料收集(1)
- FAT32目录项分析
- fat32分析一
- FAT32分析二
- FAT32文件系统的FAT表分析(二)
- FAT32文件系统之目录项分析 (四)
- SD卡FAT32文件结构(1)
- WebWork2教程(中文版)补充-例子源代码下载
- Linux kernel FAT32文件系统分析
- FAT32 长文件名例子分析
- Linux kernel FAT32文件系统分析
- Linux kernel FAT32文件系统分析
- SPI概述
- SD卡的SPI模式的初始化顺序
- 深入理解typedef
- 深入理解指针函数
- 文件分配表(FAT)
- FAT32中文版分析+补充(1)
- FAT32中文版分析+补充(2)
- FAT32中文版分析+补充(3)
- FAT32中文版分析+补充(4)
- FAT32中文版分析+补充(5)
- FAT32中文版分析+补充(6)
- 使用IAR的一些技巧:改字体…
- ZigBee-OSAL初始化流程
- ZigBee-OSAL主循环流程