U盘文件系统的认识.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
U盘文件系统 优盘上的数据按照其不同的特点和作用大致可分为 5 部分:MBR 区、DBR 区、FAT 区、FDT区和 DATA区。 主引导记录(MBR) 绝对扇区号为:MBR_LBA=0是主引导记录,等同位于硬盘的0磁道0柱面1扇区。 在总共 512 字节的主引导扇区中,MBR 只占用了其中的 446 个字节(ofs:0 - ofs:1BDH),另外的 64个字节(ofs:1BEH - ofs:1FDH)交给了 DPT(Disk Partition Table 盘分区表),最后两个字节“55 AA”(ofs:1FEH - ofs:1FFH)是分区的结束标志。?? MBR定义如下: typedef struct {? uchar bootcode[446];?? //ofs:0.启动代码。“FA 33 C0 8E D0 BC…”. PartitionTable PT[4];?? //ofs:446.分区表 length=4*16. uint EndingFlag;???? //ofs:510.结束标识:0xAA55. }MBR_tag;??? Bootcode[446]启动代码一般是固定的,用于引导 x86,不用管。?? 分区表项的定义如下: typedef struct { uchar BootFlag; //启动标志? CHS StartCHS; //分区开始的柱面、磁头、扇区? uchar SystemID; //分区类型? CHS EndCHS; //分区结束的柱面、磁头、扇区? ulong RelativeSectors; //分区起始扇区数,指分区相对于记录该分区的分区表的扇区位置之差 (该分区表:LBA=0x0)。 ulong TotalSectors;//分区总扇区数? }PartitionTable;??? 其中 CHS为一个柱面、磁头、扇区的结构,定义如下:? struct CHS { uchar Head; //磁头。 unsigned Sector : 6; //扇区。 unsigned CyH2 : 2; //柱面(高两位)。 uchar CyL8; //柱面(低八位)。? ulong Cylinder() {return (uint(CyH2)*256+CyL8);} //返回柱面值? void SetCylinder(uint Cylinder) //设置柱面值 { CyH2=(Cylinder8)0x3; CyL8=(Cylinder0xff);? }? }; 例:80 01 01 00 0B FE BF FC 3F 00 00 00 7E 86 BB 00 在这里我们可以看到:?? “80”是一个分区的激活标志,表示系统可引导;?? “01 01 00”表示分区开始的磁头号为 01,开始的扇区号为 01,开始的柱面号为 00;?? “0B”表示分区的系统类型是 FAT32,其他比较常用的有 04(FAT16)、06(bigFAT16)、01(FAT12)、07(NTFS);?? “FE BF FC”表示分区结束的磁头号为 254,分区结束的扇区号为 63、分区结束的柱面号为 764;?? ?“3F 00 00 00”表示首扇区的相对扇区号为 63; ?“7E 86 BB 00”表示总扇区数为 系统引导记录(DBR) 绝对扇区号为:DBR_LBA=MBR.PT[0].RelativeSectors 处是 DBR,等同位于硬盘的 0 磁道 1柱面 1 扇区(512 字节),是操作系统可以直接访问的第一个扇区,它包括一个引导程序和一个被称为 BPB(Bios Parameter Block)的本分区参数记录表。引导程序的主要任务是当 MBR将系统控制权交给它时,判断本分区跟目录前两个文件是不是操作系统的引导文件(以 DOS为例,即是 Io.sys和 Msdos.sys)。如果确定存在,就把其读入内存,并把控制权交给该文件。BPB参数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数,分配单元的大小等重要参数。?? DBR定义如下: typedef struct { uchar bJmpBoot[3];????? //ofs:0.典型的如:0xEB,0x3E,0x90。 char? bOEMName[8];????? //ofs:3.典型的如:“MSWIN4.1”。 uint? BPB_wBytesPerSec;?? //ofs:11.每扇区字节数。 uchar BPB_bSecPerClus;??? //ofs:13.每簇扇区数。 ui

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档