硬盘引导扇区数据结构

[复制链接]

该用户从未签到

1

主题

0

回帖

9

积分

[INTOHARD]工兵

Rank: 1

积分
9
发表于 2013-7-17 11:24:08 | 显示全部楼层 |阅读模式
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个扇区.
偏移IOH  FAT表的个数,任何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
     {.
       BYTE  BS jmpBoot [3];         I i转指令
        BYTE  BSes OEMName[8];/厂商名和系统版本
      WORD  BPBes BytesPerSec;海扇区字节数
        BYTE  BPB_SecPerClus;/每簇扇区数
        WORD  BPBes RsvdSecCnt;         /保留扇区数
        BYTE  BPB_NumFATs;            /FA1,个数
        WORD  BPB退ootEntCnt;/根目录项数
        WORD  BPB TotSecl6;厚期版本l6bit扇区总数
      BYTE  BPB_Media ;磁介质描述符
        WORD  BPBes FATSzl6;            /FAT16每FAT表所占扇区数
      WORD  BPB一ecPerTrk;海磁道扇区数
      WORD  BPB 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 [11];
     BYTE    BS_FilSys升pe [8];
} S_BPB;
Z备分引导扇区位置了保留·
/BIOS设备了未使用
/扩展引导标记Z卷标ID
/卷标
/文件系统
文章来源南昌电脑维修网ncxdn.com/wenti/ljgz/2012/0823/391.html
  • TA的每日心情
    开心
    2018-6-9 21:04
  • 签到天数: 25 天

    [LV.4]七品知县

    9

    主题

    5167

    回帖

    2799

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    2799
    QQ
    发表于 2013-7-17 22:18:26 | 显示全部楼层
    楼主真是太好了
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2013-9-17 10:53
  • 签到天数: 29 天

    [LV.4]七品知县

    16

    主题

    83

    回帖

    316

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    316
    发表于 2013-7-18 09:22:44 | 显示全部楼层
    [s:9](1:[s:2](2:[s:209][s:8]
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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