⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fat文件系统原理(二).htm

📁 fat32文件系统的详细阐述
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                      <TD align=middle width="11%"><FONT size=2>0x34</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>2</FONT></TD>
                      <TD align=middle width="14%"><FONT 
                      size=2>0x0006</FONT></TD>
                      <TD align=middle width="49%"><FONT 
                        size=2>备份引导扇区(只供FAT32使用) 
                        为一个非零值,这个非零值表示该分区保存引导扇区的副本的保留区中的扇区号。本字段的值一般为6,建议不要使用其他值</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x36</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>12</FONT></TD>
                      <TD align=middle width="14%"><FONT 
                        size=2>12个字节均为0x00</FONT></TD>
                      <TD align=middle width="49%"><FONT 
                        size=2>保留(只供FAT32使用)供以后扩充使用的保留空间。本字段的值总为0</FONT></TD></TR></TBODY></TABLE>
                  <P>&nbsp;</P>
                  <TABLE id=table5 width="59%" border=1>
                    <TBODY>
                    <TR>
                      <TD align=middle colSpan=4><FONT size=2>表5&nbsp;&nbsp; 
                        FAT32分区的扩展BPB字段&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                        </FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>字节位移</FONT></TD>
                      <TD align=middle width="11%"><FONT 
                      size=2>字段长度(字节)</FONT></TD>
                      <TD align=middle width="15%"><FONT 
                      size=2>图8对应取值</FONT></TD>
                      <TD align=middle width="48%"><FONT 
                      size=2>字段名称和定义</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x40</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>1</FONT></TD>
                      <TD align=middle width="15%"><FONT size=2>0x80</FONT></TD>
                      <TD align=middle width="48%"><FONT size=2>物理驱动器号( 
                        Physical Drive Number) 
                        与BIOS物理驱动器号有关。软盘驱动器被标识为0x00,物理硬盘被标识为0x80,而与物理磁盘驱动器无关。一般地,在发出一个INT13h 
                        BIOS调用之前设置该值,具体指定所访问的设备。只有当该设备是一个引导设备时,这个值才有意义</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x41</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>1</FONT></TD>
                      <TD align=middle width="15%"><FONT size=2>0x00</FONT></TD>
                      <TD align=middle width="48%"><FONT size=2>保留(Reserved) 
                        FAT32分区总是将本字段的值设置为0</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x42</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>1</FONT></TD>
                      <TD align=middle width="15%"><FONT size=2>0x29</FONT></TD>
                      <TD align=middle width="48%"><FONT 
                        size=2>扩展引导标签(Extended Boot Signature) 本字段必须要有能被Windows 
                        2000所识别的值0x28或0x29</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x43</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>4</FONT></TD>
                      <TD align=middle width="15%"><FONT 
                        size=2>0x33391CFE</FONT></TD>
                      <TD align=middle width="48%"><FONT size=2>分区序号(Volume 
                        Serial Number) 在格式化磁盘时所产生的一个随机序号,它有助于区分磁盘</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x47</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>11</FONT></TD>
                      <TD align=middle width="15%"><FONT size=2>"NO 
                        NAME"</FONT></TD>
                      <TD align=middle width="48%"><FONT size=2>卷标(Volume 
                        Label) 
                      本字段只能使用一次,它被用来保存卷标号。现在,卷标被作为一个特殊文件保存在根目录中</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x52</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>8</FONT></TD>
                      <TD align=middle width="15%"><FONT 
                      size=2>"FAT32"</FONT></TD>
                      <TD align=middle width="48%"><FONT size=2>系统ID(System 
                        ID) FAT32文件系统中一般取为"FAT32"</FONT></TD></TR></TBODY></TABLE>
                  <P><BR><FONT color=#c0c0c0><SPAN 
                  style="FONT-WEIGHT: 700; BACKGROUND-COLOR: #ffff00"></SPAN></FONT>&nbsp;&nbsp;&nbsp;&nbsp; 
                  DBR的偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的。在图8所列出的偏移0x00~0x02的跳转指令"EB 
                  58 90"清楚地指明了OS引导代码的偏移位置。jump 
                  58H加上跳转指令所需的位移量,即开始于0x5A。此段指令在不同的操作系统上和不同的引导方式上,其内容也是不同的。大多数的资料上都说win98,构建于fat基本分区上的win2000,winxp所使用的DBR只占用基本分区的第0扇区。他们提到,对于fat32,一般的32个基本分区保留扇区只有第0扇区是有用的。实际上,以FAT32构建的操作系统如果是win98,系统会使用基本分区的第0扇区和第2扇区存储os引导代码;以FAT32构建的操作系统如果是win2000或winxp,系统会使用基本分区的第0扇区和第0xC扇区(win2000或winxp,其第0xC的位置由第0扇区的0xAB偏移指出)存储os引导代码。所以,在fat32分区格式上,如果DBR一扇区的内容正确而缺少第2扇区(win98系统)或第0xC扇区(win2000或winxp系统),系统也是无法启动的。如果自己手动设置NTLDR双系统,必须知道这一点。<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                  DBR扇区的最后两个字节一般存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。上面提到的其他几个参与os引导的扇区也需以0x55AA为合法结束标志。</P>
                  <P>FAT16 DBR:<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                  FAT32中DBR的含义大致如此,对于FAT12和FAT16其基本意义类似,只是相关偏移量和参数意义有小的差异,FAT格式的区别和来因,以后会说到,此处不在多说FAT12与FAT16。我将FAT16的扇区参数意义列表。感兴趣的朋友自己研究一下,和FAT32大同小异的。</P>
                  <P> </P>
                  <P>
                  <TABLE id=table6 width="49%" border=1>
                    <TBODY>
                    <TR>
                      <TD align=middle colSpan=3><FONT size=2>表6&nbsp; 
                        一个FAT16分区上的引导扇区段</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>字节位移</FONT></TD>
                      <TD align=middle width="16%"><FONT 
                      size=2>字段长度(字节)</FONT></TD>
                      <TD align=middle width="36%"><FONT 
                    size=2>字段名称</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x00</FONT></TD>
                      <TD align=middle width="16%"><FONT size=2>3</FONT></TD>
                      <TD align=middle width="36%"><FONT size=2>跳转指令(Jump 
                        Instruction)</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x03</FONT></TD>
                      <TD align=middle width="16%"><FONT size=2>8</FONT></TD>
                      <TD align=middle width="36%"><FONT size=2>OEM 
                      ID</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x0B</FONT></TD>
                      <TD align=middle width="16%"><FONT size=2>25</FONT></TD>
                      <TD align=middle width="36%"><FONT 
                    size=2>BPB</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x24</FONT></TD>
                      <TD align=middle width="16%"><FONT size=2>26</FONT></TD>
                      <TD align=middle width="36%"><FONT 
                    size=2>扩展BPB</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%" height=20><FONT 
                        size=2>0x3E</FONT></TD>
                      <TD align=middle width="16%" height=20><FONT 
                        size=2>448</FONT></TD>
                      <TD align=middle width="36%" height=20><FONT 
                        size=2>引导程序代码(Bootstrap Code)</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT 
                      size=2>0x01FE</FONT></TD>
                      <TD align=middle width="16%"><FONT size=2>4</FONT></TD>
                      <TD align=middle width="36%"><FONT 
                        size=2>扇区结束标识符(0x55AA)</FONT></TD></TR></TBODY></TABLE></P>
                  <P><FONT color=#c0c0c0></FONT> </P>
                  <P>
                  <TABLE id=table7 width="57%" border=1>
                    <TBODY>
                    <TR>
                      <TD align=middle colSpan=4><FONT size=2>表7&nbsp; 
                        FAT16分区的BPB字段&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>字节位移</FONT></TD>
                      <TD align=middle width="11%"><FONT 
                      size=2>字段长度(字节)</FONT></TD>
                      <TD align=middle width="14%"><FONT size=2>例值</FONT></TD>
                      <TD align=middle width="46%"><FONT 
                    size=2>名称和定义</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x0B</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>2</FONT></TD>
                      <TD align=middle width="14%"><FONT 
                      size=2>0x0200</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>扇区字节数(Bytes 
                        Per Sector) 
                        硬件扇区的大小。本字段合法的十进制值有512、1024、2048和4096。对大多数磁盘来说,本字段的值为512</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x0D</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>1</FONT></TD>
                      <TD align=middle width="14%"><FONT size=2>0x40</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>每簇扇区数(Sectors 
                        Per Cluster) 
                        一个簇中的扇区数。由于FAT16文件系统只能跟踪有限个簇(最多为65536个)。因此,通过增加每簇的扇区数可以支持最大分区数。分区的缺省的簇的大小取决于该 
                        分区的大小。本字段合法的十进制值有 
                        1、2、4、8、16、32、64和128。导致簇大于32KB(每扇区字节数*每簇扇区数)的值会引起磁盘错误和软件错误</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x0e</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>2</FONT></TD>
                      <TD align=middle width="14%"><FONT 
                      size=2>0x0001</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>保留扇区数(Reserved 
                        Sector) 第一个FAT开始之前的扇区数,包括引导扇区。本字段的十进制值一般为1</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x10</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>1</FONT></TD>
                      <TD align=middle width="14%"><FONT size=2>0x02</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>FAT数(Number of 
                        FAT)该分区上FAT的副本数。本字段的值一般为2</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x11</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>2</FONT></TD>
                      <TD align=middle width="14%"><FONT 
                      size=2>0x0200</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>根目录项数(Root 
                        Entries) 
                        能够保存在该分区的根目录文件夹中的32个字节长的文件和文件夹名称项的总数。在一个典型的硬盘上,本字段的值为512。其中一个项常常被用作卷标号(Volume 
                        Label),长名称的文件和文件夹每个文件使用多个项。文件和文件夹项的最大数一般为511,但是如果使用的长文件名,往往都达不到这个数</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x13</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>2</FONT></TD>
                      <TD align=middle width="14%"><FONT 
                      size=2>0x0000</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>小扇区数(Small 
                        Sector) 
                        该分区上的扇区数,表示为16位(&lt;65536)。对大于65536个扇区的分区来说,本字段的值为0,而使用大扇区数来取代它</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x15</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>1</FONT></TD>
                      <TD align=middle width="14%"><FONT size=2>0xF8</FONT></TD>
                      <TD align=middle width="46%"><FONT size=2>媒体描述符( Media 
                        Descriptor)提供有关媒体被使用的信息。值0xF8表示硬盘,0xF0表示高密度的3.5寸软盘。媒体描述符要用于MS-DOS 
                        FAT16磁盘,在Windows 2000中未被使用</FONT></TD></TR>
                    <TR>
                      <TD align=middle width="11%"><FONT size=2>0x16</FONT></TD>
                      <TD align=middle width="11%"><FONT size=2>2</FONT></TD>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -