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

📄 硬盘fat文件系统原理的详细分析.htm

📁 硬盘fat文件系统的详细分析,包括物理结构,逻辑结构,引导原理等
💻 HTM
📖 第 1 页 / 共 5 页
字号:
                  </STRONG>跳转指令之后是8字节长的OEM&nbsp;ID,它是一个字符串,&nbsp;OEM&nbsp;ID标识了格式化该分区的操作系统的名称和版本号。为了保留与MS-DOS的兼容性,通常Windows&nbsp;2000格式化该盘是在FAT16和FAT32磁盘上的该字段中记录了“MSDOS&nbsp;5.0”,在NTFS磁盘上(关于ntfs,另述),Windows&nbsp;2000记录的是“NTFS”。通常在被Windows&nbsp;95格式化的磁盘上OEM&nbsp;ID字段出现“MSWIN4.0”,在被Windows&nbsp;95&nbsp;OSR2和Windows&nbsp;98格式化的磁盘上OEM&nbsp;ID字段出现“MSWIN4.1”。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>接下来的从偏移0x0B开始的是一段描述能够使可执行引导代码找到相关参数的信息。通常称之为BPB(BIOS&nbsp;Parameter&nbsp;Block),BPB一般开始于相同的位移量,因此,标准的参数都处于一个已知的位置。磁盘容量和几何结构变量都被封在BPB之中。由于引导扇区的第一部分是一个x86跳转指令。因此,将来通过在BPB末端附加新的信息,可以对BPB进行扩展。只需要对该跳转指令作一个小的调整就可以适应BPB的变化。图9已经列出了项目的名称和取值,为了系统的研究,针对图8,将FAT32分区格式的BPB含义和扩展BPB含义释义为表格,见表4和表5。</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471811876.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>DBR的偏移0x5A开始的数据为操作系统引导代码。这是由偏移0x00开始的跳转指令所指向的。在图8所列出的偏移0x00~0x02的跳转指令"EB&nbsp;58&nbsp;90"清楚地指明了OS引导代码的偏移位置。jump&nbsp;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双系统,必须知道这一点。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>DBR扇区的最后两个字节一般存储值为0x55AA的DBR有效标志,对于其他的取值,系统将不会执行DBR相关指令。上面提到的其他几个参与os引导的扇区也需以0x55AA为合法结束标志。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; FAT16&nbsp;DBR:</STRONG></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT32中DBR的含义大致如此,对于FAT12和FAT16其基本意义类似,只是相关偏移量和参数意义有小的差异,FAT格式的区别和来因,以后会说到,此处不在多说FAT12与FAT16。我将FAT16的扇区参数意义列表。感兴趣的朋友自己研究一下,和FAT32大同小异的。</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471812811.gif" border=0></P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471812436.gif" border=0></P>
                  <P><FONT color=#0000ff><STRONG><FONT 
                  color=#000000>&nbsp;&nbsp;&nbsp; 
                  </FONT></STRONG>4.2&nbsp;&nbsp;关于保留扇区</FONT></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>在上述FAT文件系统DBR的偏移0x0E处,用2个字节存储保留扇区的数目。所谓保留扇区(有时候会叫系统扇区,隐藏扇区),是指从分区DBR扇区开始的仅为系统所有的扇区,包括DBR扇区。在FAT16文件系统中,保留扇区的数据通常设置为1,即仅仅DBR扇区。而在FAT32中,保留扇区的数据通常取为32,有时候用Partition&nbsp;Magic分过的FAT32分区会设置36个保留扇区,有的工具可能会设置63个保留扇区。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT32中的保留扇区除了磁盘总第0扇区用作DBR,总第2扇区(win98系统)或总第0xC扇区(win2000,winxp)用作OS引导代码扩展部分外,其余扇区都不参与操作系统管理与磁盘数据管理,通常情况下是没作用的。操作系统之所以在FAT32中设置保留扇区,是为了对DBR作备份或留待以后升级时用。FAT32中,DBR偏移0x34占2字节的数据指明了DBR备份扇区所在,一般为0x06,即第6扇区。当FAT32分区DBR扇区被破坏导致分区无法访问时。可以用第6扇区的原备份替换第0扇区来找回数据。</P>
                  <P><FONT color=#0000ff><STRONG><FONT 
                  color=#000000>&nbsp;&nbsp;&nbsp; 
                  </FONT></STRONG>4.3&nbsp;&nbsp;FAT表和数据的存储原则</FONT></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT表(File&nbsp;Allocation&nbsp;Table&nbsp;文件分配表),是Microsoft在FAT文件系统中用于磁盘数据(文件)索引和定位引进的一种链式结构。假如把磁盘比作一本书,FAT表可以认为相当于书中的目录,而文件就是各个章节的内容。但FAT表的表示方法却与目录有很大的不同。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>在FAT文件系统中,文件的存储依照FAT表制定的簇链式数据结构来进行。同时,FAT文件系统将组织数据时使用的目录也抽象为文件,以简化对数据的管理。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; ★存储过程假想:</STRONG></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>我们模拟对一个分区存储数据的过程来说明FAT文件系统中数据的存储原则。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>假定现在有一个空的完全没有存放数据的磁盘,大小为100KB,我们将其想象为线形的空间地址。为了存储管理上的便利,我们人为的将这100KB的空间均分成100份,每份1KB。我们来依次存储这样几个文件:A.TXT(大小10KB),B.TXT(大小53.6KB),C.TXT(大小20.5KB)。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>最起码能够想到,我们可以顺序的在这100KB空间中存放这3个文件。同时不要忘了,我们还要记下他们的大小和开始的位置,这样下次要用时才能找的到,这就像是目录。为了便于查找,我们假定用第1K的空间来存储他们的特征(属性)。还有,我们设计的存储单位是1KB,所以,A.TXT我们需要10个存储单位(为了说明方便,我们把存储单位叫做“簇”吧。也能少打点字,呵呵。),B.TXT需要54个簇,C.TXT需要21个簇。可能有人会说B.TXT和C.TXT不是各自浪费了不到1簇的空间吗?干嘛不让他们紧挨着,不是省地方吗?我的回答是,如果按照这样的方式存储,目录中原本只需要记下簇号,现在还需要记下簇内的偏移,这样会增加目录的存储量,而且存取没有了规则,读取也不太方便,是得不偿失的。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>根据上面所说的思想,我们设计了这样的图4.3.1所示的存储方式。</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471813965.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>我们再考虑如何来写这三个文件的目录。对于每个文件而言,一定要记录的有:文件名,开始簇,大小,创建日期、时间,修改日期、时间,文件的读写属性等。这里大小能不能用结束簇来计算呢?一定不能,因为文件的大小不一定就是整数个簇的大小,否则的话像B.TXT的内容就是54KB的内容了,少了固然不行,可多了也是不行的。那么我们怎么记录呢?可以想象一下。为了管理上的方便,我们用数据库的管理方式来管理我们的目录。于是我把1KB再分成10份,假定开始簇号为0,定义每份100B的各个位置的代表含义如图4.3.2</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471813884.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>这样设计的结构绝对可以对文件进行正确的读写了。接着让我们设计的文件系统工作吧。先改动个文件,比如A.TXT,增加点内容吧!咦?增加后往哪里放呀,虽然存储块的后面有很多空间,但紧随其后B.TXT的数据还顶着呢?要是把A.TXT移到后边太浪费处理资源,而且也不一定解决问题。这个问题看来暂时解决不了。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>那我们换个操作,把B.txt删了,b.txt的空间随之释放。这时候空间如图4.3.3,目录如图4.3.4</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471813150.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>这个操作看来还可以,我们接着做,在存入一个文件D.txt(大小为60.3KB),总共100簇的空间只用了31簇,还有68簇剩余,按说能放下。可是?往那里放呢?没有61个连续的空间了,目录行没办法写了,看来无连续块存储暂时也不行。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>你一定能够想到我们可以在连续空间不够或增加文件长度的时候转移影响我们操作的其他文件,从而腾出空间来,但我要问你,那不是成天啥也不要干了,就是倒腾东西了吗?</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>看来我们设计的文件系统有致命的漏洞,怎么解决呢?其实可以这样解决:</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>首先我们允许文件的不连续存储。目录中依然只记录开始簇和文件的大小。那么我们怎么记录文件占用那些簇呢,以文件映射簇不太方便,因为文件名是不固定的。我们换个思想,可以用簇来映射文件,在整个存储空间的前部留下几簇来记录数据区中数据与簇号的关系。对于上例因为总空间也不大,所以用前部的1Kb的空间来记录这种对应,假设3个文件都存储,空间分配如图4.3.5,同时修改一下目录,如图4.3.6</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471813954.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>第一簇用来记录数据区中每一簇的被占用情况,暂时称其为文件分配表。结合文件分配表和文件目录就可以达到完全的文件读取了。我们想到,把文件分配表做成一个数据表,以图4.3.7的形式记录簇与数据的对应。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>用图4.3.7的组织方式是完全可以实现对文件占有簇的记录的。但还不够效率。比如文件名在文件分配表中记录太多,浪费空间,而实际上在目录中已经记录了文件的开始簇了。所以可以改良一下,用链的方式来存放占有簇的关系,变成图4.3.8的组织方式。</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471813427.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>参照图4.3.8来理解一下文件分配表的意义。如文件a.txt我们根据目录项中指定的a.txt的首簇为2,然后找到文件分配表的第2簇记录,上面登记的是3,我们就能确定下一簇是3。找到文件分配表的第3簇记录,上面登记的是4,我们就能确定下一簇是4......直到指到第11簇,发现下一个指向是FF,就是结束。文件便丝毫无误读取完毕。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>我们再看上面提到的第三种情况,就是将b.txt删除以后,存入一个大小为60.3KB的d.txt。利用簇链可以很容易的实现。实现后的磁盘如图4.3.9&nbsp;&nbsp;4.3.10&nbsp;&nbsp;4.3.11</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471814572.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>上面是我们对文件存储的一种假设,也该揭开谜底的时候了。上面的思想其实就是fat文件系统的思想的精髓(但并不是,尤其像具体的参数的意义与我们所举的例子是完全不同的。请忘掉上边细节,努力记忆下边)。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  ★FAT16存储原理:</STRONG>&nbsp;&nbsp;</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>当把一部分磁盘空间格式化为fat文件系统时,fat文件系统就将这个分区当成整块可分配的区域进行规划,以便于数据的存储。一般来讲,其划分形式如图7所示。我们把FAT16部分提取出来,详细描述一下:</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT16是Microsoft较早推出的文件系统,具有高度兼容性,目前仍然广泛应用于个人电脑尤其是移动存储设备中,FAT16简单来讲由图4.3.12所示的6部分组成(主要是前5部分)。引导扇区(DBR)我们已经说过,FAT16在DBR之后没有留有任何保留扇区,其后紧随的便是FAT表。FAT表是FAT16用来记录磁盘数据区簇链结构的。像前面我们说过的例子一样,FAT将磁盘空间按一定数目的扇区为单位进行划分,这样的单位称为簇。通常情况下,每扇区512字节的原则是不变的。簇的大小一般是2n&nbsp;(n为整数)个扇区的大小,像512B,1K,2K,4K,8K,16K,32K,64K。实际中通常不超过32K。&nbsp;之所以簇为单位而不以扇区为单位进行磁盘的分配,是因为当分区容量较大时,采用大小为512b的扇区管理会增加fat表的项数,对大文件存取增加消耗,文件系统效率不高。分区的大小和簇的取值是有关系的,见表9&nbsp;&nbsp;</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471814790.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>注意:少于32680个扇区的分区中,簇空间大小可最多达到每个簇8个扇区。不管用户是使用磁盘管理器来格式化分区,还是使用命令提示行键入format命令格式化,格式化程序都创建一个12位的FAT。少于16MB的分区,系统通常会将其格式化成12位的FAT,FAT12是FAT的初始实现形式,是针对小型介质的。FAT12文件分配表要比FAT16和FAT32的文件分配表小,因为它对每个条目使用的空间较少。这就给数据留下较多的空间。所有用FAT12格式化的5.25英寸软盘以及1.44MB的3.5英寸软盘都是由FAT12格式化的。除了FAT表中记录每簇链结的二进制位数与FAT16不同外,其余原理与FAT16均相同,不再单独解释。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>格式化FAT16分区时,格式化程序根据分区的大小确定簇的大小,然后根据保留扇区的数目、根目录的扇区数目、数据区可分的簇数与FAT表本身所占空间&nbsp;来确定FAT表所需的扇区数目,然后将计算后的结果写入DBR的相关位置。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT16&nbsp;DBR参数的偏移0x11处记录了根目录所占扇区的数目。偏移0x16记录了FAT表所占扇区的数据。偏移0x10记录了FAT表的副本数目。系统在得到这几项参数以后,就可以确定数据区的开始扇区偏移了。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT16文件系统从根目录所占的32个扇区之后的第一个扇区开始以簇为单位进行数据的处理,这之前仍以扇区为单位。对于根目录之后的第一个簇,系统并不编号为第0簇或第1簇&nbsp;(可能是留作关键字的原因吧),而是编号为第2簇,也就是说数据区顺序上的第1个簇也是编号上的第2簇。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT文件系统之所以有12,16,32不同的版本之分,其根本在于FAT表用来记录任意一簇链接的二进制位数。以FAT16为例,每一簇在FAT表中占据2字节(二进制16位)。所以,FAT16最大可以表示的簇号为0xFFFF(十进制的65535),以32K为簇的大小的话,FAT32可以管理的最大磁盘空间为:32KB×65535=2048MB,这就是为什么FAT16不支持超过2GB分区的原因。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT表实际上是一个数据表,以2个字节为单位,我们暂将这个单位称为FAT记录项,通常情况其第1、2个记录项(前4个字节)用作介质描述。从第三个记录项开始记录除根目录外的其他文件及文件夹的簇链情况。根据簇的表现情况FAT用相应的取值来描述,见表10</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471814148.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>看一幅在winhex所截FAT16的文件分配表,图10:</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471814633.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>如图,FAT表以"F8&nbsp;FF&nbsp;FF&nbsp;FF"&nbsp;开头,此2字节为介质描述单元,并不参与FAT表簇链关系。小红字标出的是FAT扇区每2字节对应的簇号。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>相对偏移0x4~0x5偏移为第2簇(顺序上第1簇),此处为FF,表示存储在第2簇上的文件(目录)是个小文件,只占用1个簇便结束了。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>第3簇中存放的数据是0x0005,这是一个文件或文件夹的首簇。其内容为第5簇,就是说接下来的簇位于第5簇——〉&nbsp;FAT表指引我们到达FAT表的第5簇指向,上面写的数据是"FF&nbsp;FF",意即此文件已至尾簇。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>第4簇中存放的数据是0x0006,这又是一个文件或文件夹的首簇。其内容为第6簇,就是说接下来的簇位于第6簇——〉FAT表指引我们到达FAT表的第6簇指向,上面写的数据是0x0007,就是说接下来的簇位于第7簇——〉FAT表指引我们到达FAT表的第7簇指向……直到根据FAT链读取到扇区相对偏移0x1A~0x1B,也就是第13簇,上面写的数据是0x000E,也就是指向第14簇——〉14簇的内容为"FF&nbsp;FF",意即此文件已至尾簇。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>后面的FAT表数据与上面的道理相同。不再分析。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT表记录了磁盘数据文件的存储链表,对于数据的读取而言是极其重要的,以至于Microsoft为其开发的FAT文件系统中的FAT表创建了一份备份,就是我们看到的FAT2。FAT2与FAT1的内容通常是即时同步的,也就是说如果通过正常的系统读写对FAT1做了更改,那么FAT2也同样被更新。如果从这个角度来看,系统的这个功能在数据恢复时是个天灾。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT文件系统的目录结构其实是一颗有向的从根到叶的树,这里提到的有向是指对于FAT分区内的任一文件(包括文件夹),均需从根目录寻址来找到。可以这样认为:目录存储结构的入口就是根目录。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT文件系统根据根目录来寻址其他文件(包括文件夹),故而根目录的位置必须在磁盘存取数据之前得以确定。FAT文件系统就是根据分区的相关DBR参数与DBR中存放的已经计算好的FAT表(2份)的大小来确定的。格式化以后,跟目录的大小和位置其实都已经确定下来了:位置紧随FAT2之后,大小通常为32个扇区。根目录之后便是数据区第2簇。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>FAT文件系统的一个重要思想是把目录(文件夹)当作一个特殊的文件来处理,FAT32甚至将根目录当作文件处理(旁:NTFS将分区参数、安全权限等好多东西抽象为文件更是这个思想的升华),在FAT16中,虽然根目录地位并不等同于普通的文件或者说是目录,但其组织形式和普通的目录(文件夹)并没有不同。FAT分区中所有的文件夹(目录)文件,实际上可以看作是一个存放其他文件(文件夹)入口参数的数据表。所以目录的占用空间的大小并不等同于其下所有数据的大小,但也不等同于0。通常是占很小的空间的,可以看作目录文件是一个简单的二维表文件。其具体存储原理是:</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>不管目录文件所占空间为多少簇,一簇为多少字节。系统都会以32个字节为单位进行目录文件所占簇的分配。这32个字节以确定的偏移来定义本目录下的一个文件(或文件夹)的属性,实际上是一个简单的二维表。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; </STRONG>这32个字节的各字节偏移定义如表11:</P>
                  <P align=center><IMG alt="" 
                  src="硬盘FAT文件系统原理的详细分析.files/2004471815521.gif" border=0></P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; </STRONG>对表11中的一些取值进行说明:</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>(1)、对于短文件名,系统将文件名分成两部分进行存储,即主文件名+扩展名。0x0~0x7字节记录文件的主文件名,0x8~0xA记录文件的扩展名,取文件名中的ASCII码值。不记录主文件名与扩展名之间的"."&nbsp;&nbsp;主文件名不足8个字符以空白符(20H)填充,扩展名不足3个字符同样以空白符(20H)填充。0x0偏移处的取值若为00H,表明目录项为空;若为E5H,表明目录项曾被使用,但对应的文件或文件夹已被删除。(这也是误删除后恢复的理论依据)。文件名中的第一个字符若为“.”或“..”表示这个簇记录的是一个子目录的目录项。“.”代表当前目录;“..”代表上级目录(和我们在dos或windows中的使用意思是一样的,如果磁盘数据被破坏,就可以通过这两个目录项的具体参数推算磁盘的数据区的起始位置,猜测簇的大小等等,故而是比较重要的)</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>(2)、0xB的属性字段:可以看作系统将0xB的一个字节分成8位,用其中的一位代表某种属性的有或无。这样,一个字节中的8位每位取不同的值就能反映各个属性的不同取值了。如00000101就表示这是个文件,属性是只读、系统。</P>
                  <P><STRONG>&nbsp;&nbsp;&nbsp; 
                  </STRONG>(3)、0xC~0x15在原FAT16的定义中是保留未用的。在高版本的WINDOWS系统中有时也用它来记录修改时间和最近访问时间。那样其字段的意义和FAT32的定义是相同的,见后边FAT

⌨️ 快捷键说明

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