硬盘引导扇区数据结构
BPB是FA1,文件系统中十分重要的数据结构,位于该FA1,卷的第一个扇区,同时也属于FA1,文件系统基本区域的保留区。这个扇区称为启动扇区,又称为保留扇区或0扇区。在这个数据结构中存放了磁盘的各种参数,对于FAT16和FAT32的BPB来说,有相同的部分,也有不同的部分,下面分别加以阐述。为了清楚地说明问题,我们将该扇区读入内存,并将起始地址设为0,表中各个参数的位置则以0作为偏移量,这样,读者就可以在上述图表中找到各参数相应的位置。
.1. FAT16和FAT32的BPB参数相同段偏移OOH-02H一条Intel x86架构3字节的无条件跳转指令,跳转到操作系统的启动
代码,这些启动代码往往紧接着BPB后面的0扇区中的剩余字节,当然也可以位于其他扇区。
偏移03H--0AH厂商名和操作系统版本,Windows 98/XP系统的(FAT 16, FAT32)分区一般为MSWJN4.1 e
偏移OBH-OCH每扇区字节数,取值只能为512, 1024, 2048或4096。一般硬盘或软盘的一个扇区大小为512B
偏移 ODH每簇扇区数,其值必须是2的正整数次方,同时必须保证每簇字节数不超过32Ka
偏移OEH-OFH保留扇区数,一般FAT32的保留扇区数为32个扇区.
偏移IOHFAT表的个数,任何FA7,格式在此域都建议为2.
偏移I1H-12H对于FAT16此域包含根目录中的目录项数(每项长度32字节),对于FAT32,此项值必须为0.
偏移13H-14H早期版本中l6bit的总扇区数(包括FAT卷上的4个基本区中全部扇区):对于FAT32,此域值必须为00
偏移15H介质描述,一般硬盘为F8H.
偏移16H--+ 17H对于软盘或早期小硬盘为每FAT,占用的扇区数,对于FAT32此域必须为0.
偏移18H- 19H每磁道扇区数,用于BIOS中断Ox130
偏移IAH-IBH每柱磁头数,一般为FFH OOH,即每个柱面有255个磁头。
偏移1CH^-1FH当前FA7,分区之前所隐藏的扇区数,必须在调用BIOS的0x13中断时才可得到此数值。
偏移20H-23H对大硬盘来说该处存放的是该分区占用的扇区数(包括4个基本区的全部扇区)。
注意:从偏移。ffset 36开始,FAT16的内容则与FAT32的有所区别,下面分别给出它们的内容。
2. FAT 16和FAT32的BPB参数不同段
(1)引导扇区的FAT16区段
偏移24H用于BIOS中断0x13得到磁盘驱动参数,此域的值实际上由操作系统来决定。
偏移25H保留(供NT使用),格式化FA71,卷时必须把此域设置为00
偏移26H扩展引导标记(0x29),用于指明此后的3个域可用。
偏移27H- 2AH卷标序列号,此域与下面的磁盘卷标丫起用来检测磁盘是否正确。
偏移2BH-35H磁盘卷标,此域必须与根目录中11字节长的卷标一致。也就是FAT文件系统必须保证根目录的卷标文件在更改或创建的同时,此域得到及时的更新。
偏移36H^-3DH以下几个值:"FAT12", FAT16. "FAT32",但程序实现时,我们不能用此域来判断FAI,文件系统类型。
(2)引导扇区的FAT32区段
偏移24H-27H一个FAI,表所占的扇区数,此域为FAT32特有,同时偏移16H--17H处的值必须为0.
偏移28H---29H此域为FAT32特有,对数据恢复程序设计木重要,这里就不详细说明含义。
偏移2AH^-2BH同样对于数据恢复程序设计来说不重要,这里不详细说明含义。
偏移2CH^-2FH根目录的起始簇,通常该数值为20
偏移30H-31H保留区中FAT32卷FSIIVFO结构所占的扇区数,通常为1e
偏移32H-33H备份引导扇区的位置,通常为6a
偏移34H-3FH用于以后FAI,的扩展使用,对于FAT32,此域用0填充。
偏移40H--46H这些字节对数据恢复程序设计来说不重要,故这里均不加以说明。
偏移47H^-51H用户设置的卷标,如果没有卷标,此处常为字符串NO NAME.
偏移52H-59H文件系统,对于FAT32文件系统,此处常为FAT32,FATI6则为FATI6.
3.结束标识
偏移1FEH--IFFH为结束标识,和上文提到的主引导区的结束标识一样为OxAA55H,如果没有这个结束标识,系统将认为这是不合法的引导扇区。但不要把OxAA55当成启动扇区最后两个字节的内容。若每扇区字节数大于512,则该标记龙没有改变·
4. BPB数据结构具体化
通过上面对BPB各个参数的详细描述,读者应该知道BPB对数据恢复程序设计的重要性了吧。下面就对BPB的各个参数给出一个详细的结构体,直接与恢复程序相对应。
typedef struct BPB_DBR
{.
BYTEBS jmpBoot ; I i转指令
BYTEBSes OEMName;/厂商名和系统版本
WORDBPBes BytesPerSec;海扇区字节数
BYTEBPB_SecPerClus;/每簇扇区数
WORDBPBes RsvdSecCnt; /保留扇区数
BYTEBPB_NumFATs; /FA1,个数
WORDBPB退ootEntCnt;/根目录项数
WORDBPB TotSecl6;厚期版本l6bit扇区总数
BYTEBPB_Media ;磁介质描述符
WORDBPBes FATSzl6; /FAT16每FAT表所占扇区数
WORDBPB一ecPerTrk;海磁道扇区数
WORDBPB NumHeads;理辑磁头数
DWORD BPBes HiddSec; /隐含扇区数
DWORD BPBes TotSec32;偏区总数
//*******************FAT32***************
DWORD BPB FATSz32; /每FAI,表所占扇区数(大于32M)
WORD BPB ExtFlag;际记
WORD BPB FSVer;/版本
DWORD BPB RootClus;/根目录起始簇
WORD BPB一SInfo;睬留区中FAT32卷FSINFO结构所占的扇区数
WORD BPB一KBootSec;
BYTE BPB_Reserved[121;
BYTE .BS_DrvNum;
BYTE BS_Reservedl;
BYTE BS_BootSig;
DWORD BS_Vo1ID;
BYTE BS_VolLab ;
BYTE BS_FilSys升pe ;
} S_BPB;
Z备分引导扇区位置了保留·
/BIOS设备了未使用
/扩展引导标记Z卷标ID
/卷标
/文件系统
文章来源南昌电脑维修网ncxdn.com/wenti/ljgz/2012/0823/391.html 楼主真是太好了 (1:(2:
页:
[1]