FAT32文件系統一此關鍵參數

FAT32文件系統一此關鍵參數
FAT32文件系統
Windows95 OSR2和Windows 98開始支持FAT32 文件系統,它是對早期DOS的FAT16文件系統的增強,由於文件系統的核心--文件分
配表FAT由16位擴充爲32位,所以稱爲FAT32文件系統。在一邏輯盤(硬盤的一分區)超過512 兆字節時使用這種格式,會更高效地存儲
數據,減少硬盤空間的浪費,一般還會使程序運行加快,使用的計算機系統資源更少,因此是使用大容量硬盤存儲文件的極有效的系統。
本人對Windows 98下的FAT32 文件系統做了分析實驗,總體上與FAT16文件系統變化不大,現將有關變化部分簡介如下:
  (一)FAT32 文件系統將邏輯盤的空間劃分爲三部分,依次是引導區(BOOT區)、文件分配表區(FAT區)、數據區(DATA區)。引
導區和文件分配表區又合稱爲系統區。
  (二)引導區從第一扇區開始,使用了三個扇區,保存了該邏輯盤每扇區字節數,每簇對應的扇區數等等重要參數和引導記錄。之後
還留有若干保留扇區。而FAT16文件系統的引導區只佔用一個扇區,沒有保留扇區。
  (三)文件分配表區共保存了兩個相同的文件分配表,因爲文件所佔用的存儲空間(簇鏈)及空閒空間的管理都是通過FAT實現的,
FAT如此重要,保存兩個以便第一個損壞時,還有第二個可用。文件系統對數據區的存儲空間是按簇進行劃分和管理的,簇是空間分配和
回收的基本單位,即,一個文件總是佔用若干個整簇,文件所使用的最後一簇剩餘的空間就不再使用,而是浪費掉了。
  從統計學上講,平均每個文件浪費0.5簇的空間,簇越大,存儲文件時空間浪費越多,利用率越低。因此,簇的大小決定了該盤數據
區的利用率。FAT16系統簇號用16位二進制數表示,從0002H到FFEFH個可用簇號(FFF0H到FFFFH另有定義,用來表示壞簇,文件結束簇等),
允許每一邏輯盤的數據區最多不超過FFEDH(65518)個簇。FAT32系統簇號改用32位二進制數表示,大致從00000002H到FFFFFEFFH個可用簇
號。FAT表按順序依次記錄了該盤各簇的使用情況,是一種位示圖法。
  每簇的使用情況用32位二進制填寫,未被分配的簇相應位置寫零;壞簇相應位置填入特定值;已分配的簇相應位置填入非零值,具體
爲:如果該簇是文件的最後一簇,填入的值爲FFFFFF0FH,如果該簇不是文件的最後一簇,填入的值爲該文件佔用的下一個簇的簇號,這
樣,正好將文件佔用的各簇構成一個簇鏈,保存在FAT表中。0000000H、00000001H兩簇號不使用,其對應的兩個DWORD位置(FAT表開頭的8
個字節)用來存放該盤介質類型編號。FAT表的大小就由該邏輯盤數據區共有多少簇所決定,取整數個扇區。
  (四)FAT32系統一簇對應8個邏輯相鄰的扇區,理論上,這種用法所能管理的邏輯盤容量上限爲16TB(16384GB),容量大於16TB時,
可以用一簇對應16個扇區,依此類推。FAT16系統在邏輯盤容量介於128MB到256MB時,一簇對應8個扇區,容量介於256MB到512MB時,一簇
對應16個扇區,容量介於512MB到1GB時,一簇對應32個扇區,容量介於1GB到2GB時,一簇對應32個扇區,超出2GB的部分無法使用。顯
然,對於容量大於512MB的邏輯盤,採用FAT32的簇比採用FAT16的簇小很多,大大減少了空間的浪費。
  但是,對於容量小於512MB的盤,採用FAT32雖然一簇8個扇區,比使用FAT16一簇16個扇區,簇有所減小,但FAT32的FAT表較大,佔用
空間較多,總數據區被減少,兩者相抵,實際並不能增加有效存儲空間,所以微軟建議對小於512M的邏輯盤不使用FAT32。
  另外,對於使用FAT16文件系統的用戶提一建議,硬盤分區時,不要將分區(邏輯盤)容量正好設爲某一區間的下限,例:將一邏輯盤
容量設爲1100M(稍大於1024M),則使用時其有效存儲容量比分區爲950M的一般還少,因其簇大一倍,浪費的空間較多。還有,使用FDISK
等對分區指定容量時,由於對1MB的定義不一樣(標準的二進制的1MB爲1048576B,有的系統將1MB理解爲1000000B,1000KB等),及每個分區
需從新磁道開始等因素,實際分配的容量可能稍大於指定的容量,亦需注意掌握。
  (五)根目錄區(ROOT區)不再是固定區域、固定大小,可看作是數據區的一部分。因爲根目錄已改爲根目錄文件,採用與子目錄文
件相同的管理方式,一般情況下從第二簇開始使用,大小視需要增加,因此根目錄下的文件數目不再受最多512的限制。FAT16文件系統的
根目錄區(ROOT區)是固定區域、固定大小的,是從FAT區之後緊接着的32個扇區,最多保存512個目錄項,作爲系統區的一部分。
  (六)目錄區中的目錄項變化較多,一個目錄項仍佔32字節,可以是文件目錄項、子目錄項、卷標項(僅跟目錄有)、已刪除目錄項、
長文件名目錄項等。目錄項中原來在DOS下保留未用的10個字節都有了新的定義,全部32字節的定義如下:
(1) 0 7字節文件正名
(1) 0-- 7字節文件正名。
(2) 8--10字節文件擴展名。
(3) 11字節文件屬性,按二進制位定義,最高兩位保留未用,0至5位分別是隻讀位、隱藏位、系統位、卷標位、子目錄位、歸檔位。
(4) 11--13字節僅長文件名目錄項用,用來存儲其對應的短文件名目錄項的文件名字節校驗和等。
(5) 13--15字節24位二進制的文件建立時間,其中的高5位爲小時,次6位爲分鐘。
(6) 16--17字節16位二進制的文件建立日期,其中的高7位爲相對於1980年的年份值,次4位爲月份,後5位爲月內日期。
(7) 18--19字節16位二進制的文件最新訪問日期,定義同(6)。
(8) 20--21字節起始簇號的高16位。
(9) 22--23字節16位二進制的文件最新修改時間,其中的高5位爲小時,次6位爲分鐘,後5位的二倍爲秒數。
(10)24--25字節16位二進制的文件最新修改日期,定義同(6)。
(11)26--27字節起始簇號的低16位。
(12)28--31字節32位的文件字節長度。
  其中第(4)至(8)項爲以後陸續定義的。對於子目錄項,其(12)爲零;已刪除目錄項的首字節值爲E5H。在可以使用長文件名的FAT32
系統中,文件目錄項保存該文件的短文件名,長文件名用若干個長文件名目錄項保存,長文件名目錄項倒序排在文件短目錄項前面,全部
是採用雙字節內碼保存的,每一項最多保存十三個字符內碼,首字節指明是長文件名的第幾項,11字節一般爲0FH,12字節指明類型,13字
節爲校驗和,26--27字節爲零。
  (七)以前版本的Windows 和DOS與FAT32 不兼容,不能識別FAT32分區,有些程序也依賴於FAT16 文件系統,不能和FAT32 驅動
器一道工作。將硬盤轉換爲FAT32,就不能再用雙引導運行以前版本的Windows(Windows 95 [Version 4.00.950]、Windows NT 3.x、
Windows NT 4.0 和Windows 3.x)。
硬盤數據恢復知識
數據恢復一直以來都是我們關注的問題,因爲你的電腦數據每天都在受着諸如病毒、惡意代碼、***、誤操作等的威脅!那麼如何才能恢
復你的數據呢?希望本文能對你有所幫助!
一、理論篇
要深入學習數據恢復,並非是一件容易的事,要想成爲一個數據恢復專家,沒有深厚的理論知識是不可能的,你必須了十分了解磁盤的邏
輯結構,就讓我們來看看需要學習的理論知識吧。
當我們對文件進行訪問時,你有沒有想過,操作系統是如何對文件進行操作的呢?這些文件又是如何存放在磁盤當中的呢?先來看看硬盤
的總體結構,在介紹硬盤總體結構之前有必要介紹一下硬盤的參數,硬盤是以磁頭(Heads),柱面(Cylinders),扇區(Sectors)進行訪
問的。其中: 磁頭數(Heads)表示硬盤總共有幾個磁頭,也就是有幾面盤片, 最大爲255 (用8 個二進制位存儲); 柱面數(Cylinders) 表
示硬盤每一面盤片上有幾條磁道,最大爲1023 (用10 個二進制位存儲); 扇區數(Sectors) 表示每一條磁道上有幾個扇區, 最大爲63
(用6 個二進制位存儲). 每個扇區一般是512個字節,學習過彙編語言的朋友可能想到了,BIOS中斷13H的入口參數中,CH是磁道號其值
爲0H~FEH(最多255個磁道),CL中低6位爲扇區號,其值爲1H~3FH(最多63個扇區),DH爲磁頭號的低位,CL中的高2位爲磁頭號的高
位,也就是說,磁頭號最多由10位二進制數表示,(1111111111)2=(1023)10,也就是說最多可以表示的磁頭數爲1024個。請大家記住
這些在我們以後的學習中還會用到的,由此可以看出基於這種訪問方式我們最大能訪問的磁盤容量爲:
255 * 1023 * 63 * 512字節=8414461440/1048576=8024.66M
只有大約8G的空間,這是因爲早期磁盤還很小,想想當年你擁有一塊200M硬盤時的喜悅心情吧!就好象當年的科學家們以爲1K內存已經很
大了一樣,讓電腦用戶很長一段時間都爲配置DOS下的內存而煩惱。而今,你肯定擁有一塊大於8G的硬盤了,你能夠用她,應該多虧了一
種較新的硬盤訪問技術——擴展Int13H 技術。採用線性尋址方式存取硬盤, 所以突破了8 G的限制, 而且還加入了對可拆卸介質(如活
動硬盤)的支持,因爲是談數據恢復不是談編程,關於擴展INT13H技術我在此就不詳述了。
硬盤數據(基於FAT結構)總體結構如下:
1、主引導扇區(Master boot sector) (佔用一個扇區)
2、第一個分區的引導扇區(Boot sector)(佔用一個扇區)
3、第一個分區的FAT1 (佔用空間由磁盤大小和FAT類型來定)
4、第一個分區的FAT2 (佔用空間由磁盤大小和FAT類型來定)
5、第一個分區的根目錄區
5、第個分區的根目錄區
6、第一個分區數據區(用來存放各種文件的數據)
7、擴展分區表(佔用一個扇區)
8、第二個分區的引導扇區(Boot sector)(佔用一個扇區)
9、第二個分區的FAT1 (佔用空間由磁盤大小和FAT類型來定)
10、第二個分區的FAT2 (佔用空間由磁盤大小和FAT類型來定)
11、第二個分區的根目錄區
12、第二個分區數據區(用來存放各種文件的數據)
13、擴展分區表
. . .
注意:當你的硬盤沒有擴展分區的時候,你就沒有擴展分區表了;當你只有一個硬盤分區的時候你的硬盤結構到6就完了。
(一)主引導扇區(Master boot sector)的結構:
它是硬盤的第一個扇區, 由主引導程序(MasterBoot Record簡稱MBR),硬盤分區表(Disk Partition Table簡稱DPT )和結束標識三部
分組成。其結構如下:
1、偏移0H~1BDH 主引導程序(佔446個字節,但實際可能並沒有到這麼多的字節)
2、偏移1BEH~1FDH 硬盤分區表(佔64個字節,每個分區項佔16個字節,最多可容納4個分區項)
3、偏移1FEH~1FFH 結束標識(佔2個字節,結束標誌,總爲55H AAH)
主引導程序我在此就不分析了,需要注意的是在主引導程序中有一些出錯信息,一些引導型病毒往往會覆蓋這些信息來將自己嵌入到主引
導程序中去,並將主引導程序開始的幾個字節改爲一條跳轉指令,通過觀察主引導程序的變化,往往可以讓我們看出自己的電腦是否有引
導型病毒,一旦發現異常,我們可以用FDISK/MBR命令來覆蓋原有的MBR。結束標識的兩個字節總是55H AAH,該標識只是用於判斷這個扇
區是否是有效的主引導扇區,如果主引導程序發現沒有這個結束標識,將會認爲操作系統丟失,並顯示“Missing Operating System”。
硬盤分區表:
從偏移1BEH~1FDH的64個字節存放的是硬盤分區表,其中最多包含4個分區項,每個分區項由16個字節構成,其結構如下:
1、1BEH~1CDH 分區項1
2、1CEH~1DDH 分區項2
3、1DBH~1EDH 分區項3
4、1EFH~1FDH 分區項4
注意:沒有用到的分區項上的記錄總是16個十六進制碼00H
我們再來看看每個分區項的詳細含義,假設我們的一個分區佔用的16個字節被標爲00H~0FH,其結構如下:
00H 引導標識字節,其值只能爲00H或80H,爲00H時表示該分區不可引導,爲80H時表示該分區可用於引導。在許多諸如BOOT MAGIC之類
的軟件都是利用了這一原理,實現多操作系統引導的,瞭解了這一原理,你也可以寫出你自己的多操作系統引導程序了。
01H 分區起始磁頭號
  02H 其高2位爲分區起始柱面號的高位,底6位爲分區起始扇區號
03H 分區起始柱面號的低位
04H 分區系統標誌,當該值爲00H時,表示此分區爲不可識別的系統;爲04H時該分區爲FAT16分區;爲05H或0FH該分區爲擴展分區;爲0B
時該分區爲FAT32分區;爲83H時表示該分區爲Linux分區, 爲07時該分區爲NTFS分區等等。一些如PQMAGIC磁盤軟件在隱藏分區操作時就
是將此字節的內容保存後在把它改爲00H。
05H 分區結束磁頭號
06H 其高2位爲分區結束柱面號的高位,底6位爲分區結束扇區號
07H 分區結束柱面號的低位
08H~0BH 此4個字節爲在線性尋址方式下的分區的扇區地址。當分區大於8G時,擴展INT13H是通過該信息進行尋址的,我們可以發現在這
種方式下尋址最多可訪問的空間爲:FFFFFFFFH扇*512B/扇=2048G,也就是說我們用擴展INT13H最大可以訪問的空間爲2048G,這個數字現
在對我們來說是非常大的,但誰都不能想象計算機的發展之快,到時到底要如何來突破這個限制呢?現在誰也不知道。注意:此4個字節
是從高位到低位排列的!例如我的分區表第一個分區項此4字節的內容爲“3FH 00H 00H 00H”,它代表該分區是從0000003FH開始的,也
就是從線性地址63扇開始的(線性地址把硬盤的第一個扇記爲0H扇)
0CH~0FH 此4個字節爲以扇區爲單位的該分區大小(總扇區數),此4個字節同樣是從高位到低
位排列的!
(二)引導扇區(Boot sector)的結構:
當主引導程序找到了帶有引導標識爲80H的分區後,就會將該分區的引導扇區讀入到內存地址爲0000:7C00
處,並把控制權交給引導扇區中的引導程序,讓我們來看看其中一些需要了解的地方:
1、0H~02H 一條跳轉指令,指針指向後面的引導程序
2、03H~0AH 廠商名和系統版本
3、0BH~0CH 每扇字節數,一般爲512字節
4、0DH 每簇扇區數(有關簇的概念我們在後面會詳細介紹),對於FAT32的磁盤該字節一般爲08H,既每簇爲8H*512B=4K。
5、0EH~0FH 保留扇區數
6、10H 磁盤FAT的個數,一般爲2個
7、11H~12H 對於FAT16的磁盤爲根目錄的最大目錄項,對於FAT32的磁盤該值總爲“00H 00H”
8、13H~14H 對於軟盤或早期小硬盤該處爲分區總扇區數,對於硬盤一般此值爲“00H 00H”
9、15H 介質描述,對於1.44軟盤此處長爲“F0H”,對於硬盤此處長爲“F8H”
10、16H~17H 對於軟盤或早期小硬盤該處爲每個FAT佔用的扇區數,對於硬盤一般此值爲“00H 00H”
11、18H~19H 每道扇區數,一般爲“3FH 00H”,即每道有63個扇區
12、1AH~1BH 磁頭數,一般爲“FFH 00H”,即每個柱面有255個磁頭
13、1CH~1FH 隱含扇區數
14、20H~23H 對於大硬盤來說該處存放的是該分區佔用的扇區數
15、24H~27H 對於大硬盤來說該處存放的是每個FAT佔用的扇區數
16、40H 該處爲磁盤BIOS信息,第一塊硬盤爲“80H”,一般軟盤爲“00H”
17、47H~51H 用戶設置的卷標,如果沒有卷標此處常爲字符串“NO NAME ”
18、52H~59H 文件系統,對於FAT32文件系統此處常爲“FAT32 ”
19、1FEH~1FFH 結束標識,和上文提到的主引導區的結束標識一樣爲“55H AAH”
以上是引導扇區的一些信息,在上面我們可以獲得一些有用的信息,我們也可以想象一下爲什麼當我們在分區上單擊右鍵在分區屬性中可
以看到一些分區信息,比如分區大小,文件系統等等,知道原理,你也可以直接調用這些參數了。
(三)磁盤文件分配表(FAT)
在介紹FAT之前,我們要先了解有關簇的概念,簇(Cluster)是文件數據區被劃分成的具有大小相等的區域用於磁盤文件的計量分配單
位。一個簇可能有1、2、4、8、16、32、64或128(必須是2的冪)個扇區構成,但對於一種磁盤系統是其值往往是一定的,比如FAT16中
每簇一般爲32K(佔64個扇),FAT32中每簇一般爲4K(佔8個扇)。
要理解操作系統爲什麼要用簇對磁盤進行管理,還是得學習FAT,FAT32磁盤中在系統引導區之後有一些保留未用的扇區,再後面有一個以
F8H FFH FFH 0FH 開始的FAT表,(對於FAT16是以F8H FFH開始的),每個FAT項佔32位(4個字節),FAT16的每個FAT項佔16位(2個字
節),不同的FAT值有不同的含義:
FAT12的表項值FAT16的表項值FAT32的表項值值的含義
000H 0000H 00000000H 未用的空簇
001H~FEFH 0001H~FFEFH 00000001H~0FFFFFEFH 文件已使用的簇
FF0H~FF6H FFF0H~FFF6H 0FFFFFF0H~0FFFFFF6H 系統保留簇
FF7H FFF7H 0FFFFFF7H 壞簇
FFF8H~FFFH FFF8H~FFFFH 0FFFFFF8H~0FFFFFFFH 文件的最後一簇
注意:在FAT表項中的16進制碼總是從高向底排列的。
我們再來看看系統是如何利用FAT表來管理和訪問文件的。系統在創建一個新文件時,逐一掃描FAT,跳過已經分配的簇,將該簇分給文
件,其簇號作爲該文件的起始簇號被放在該文件的文件目錄項中(關於文件目錄項我們將在後面詳談),如果此文件的大小只需要一個簇
就可以放下的話,在該簇對應的FAT項中將放文件最後一簇的標誌(一般是FFH FFH FFH F0H,即其值爲0FFFFFFFH),如果文件大小一個
簇放不下,系統就會在繼續尋找FAT表中未用的簇,找到後將該簇的簇號寫到上一簇對應的FAT項中,如果此時已經可以存下該文件的數
據,系統就會在此簇對應的FAT中記上最後簇的標誌,否則就繼續找下一空簇......
也就是說FAT和簇是一一對應的關係,對於FAT32的FAT來說每4個字節爲1個FAT項(對於FAT16的FAT每2個字節爲一個FAT項),從0~N個FAT
項分別對應0~N個簇,在我們對文件進行訪問時,總是先訪問文件的目錄項,找到首簇簇號,再找到該簇號對應的FAT項,在其中找到下一
簇的簇號,再在下一簇對應的FAT項中找到再下一簇的簇號......一直到在FAT項中找到有文件最後一簇的標誌,我們對該文件的查找才結
束。(當然也可能在首簇對應的FAT中該文件就結束了)這樣就形成了一個鏈,我們把它稱爲盤簇鏈。
簡要介紹一下FAT12系統,FAT12現在只用於軟盤,因爲是每個FAT佔12位所以是每2個字節含有3個FAT項,我們來看看FAT12系統在尋找簇
鏈的過程:將10進制簇號*1.5並取整,該值爲FAT相對位移,在該處存放的是下一簇的簇號,以此類推。
一個問題:到底每簇佔多少扇區合適?文件所佔簇數爲:
文件佔用的簇數=[文件長度/每簇所佔空間]取整+1
文件在最後一個簇存放的時候不可能剛好放滿,沒有放滿的空間就浪費了(就好象我們打電話不可能每個電話都打到X分59.99秒,即使你
通話時間爲X分1秒你也要付出X+1分的電話費),我們可以來計算一下你的FAT系統磁盤空間浪費的大小:
浪費的空間大小=文件個數/2*每簇字節數(平均每個文件浪費半個簇的空間)
這樣看來好象簇越小浪費的空間也越小,但是有個矛盾的地方是簇越小FAT所用的空間就會越大,同時簇小了,簇鏈就越長,訪問文件的
時間就會加長,這又是一種資源上的浪費,因此,簇的大小應該是以提高文件的訪問時間和充分利用磁盤空間爲原則的。
(三)目錄項的結構
在第2個FAT表(系統一般有兩個同樣的FAT表)後我們可以找到該分區的根目錄區,在上面有許多目錄項(注意:目錄項並非根目錄才
有),讓我們先來複習一下FAT16的目錄項各個字節的含義:
由32個字節構成:
00H~07H 文件的文件名,其中00H爲以下值時有些特定含義:
00H 表項爲空表項
E5H 文件已被刪除
05H 實際該字節爲的值爲E5H
08H~0AH 文件的擴展名
0BH 文件屬性8位文件屬性字節含義如下:
B7~B6 未用
B5 歸檔位
B4 子目錄(代表該文件是一個目錄或叫文件夾)
B3 卷標(卷標也解釋爲一種特殊的文件)
B2 系統文件
B1 隱藏文件
B0 只讀文件
0CH~15H FAT16系統保留未用
16H~17H 系統最後修改時間,其中:
16H字節的0~4位是以2秒爲增量的秒
16H字節的5~7位和17H字節的0~2位是分鐘
17H字節的3~7位是小時
18H~19H 文件最後修改的日期,其中:
18H字節0~4位是天號
18H字節5~7位和19H字節0位是月份
19H字節的1~7位爲年號,0~119分別代表1980~2099
1AH~1BH 文件的起始簇號(我們在之前已經介紹了)
1CH~1FH 文件的長度(單位爲字節)
我們知道用在FAT16系統下的文件名有一些弊端,如:文件名最多只能有8個字符(或4個漢字),擴展名最多有3個字符,不分大小寫,不
能用一些特殊字符等。在FAT32系統這些問題已經得到解決,我們來看看FAT32系統是如何解決長文件名問題的。假如在你的電腦中有一個
文件名爲abcdefghijklmnopqrstuvwxyz111111.txt的文件名,那麼該文件在磁盤目錄中就佔用了4個已32字節爲單位的目錄項,其中有3個目
錄項是用來描述長文件名的,有1個目錄項是用來兼容老的FAT系統的,我們來看看例子中前3個用於描述長文件名的目錄項:
43H 31H 00H 31H 00H 31H 00H 31H 00H 31H 00H 0FH 00H 27H 31H 00H
2EH 00H 74H 00H 78H 00H 74H 00H 00H 00H 00H 00H FFH FFH FFH FFH
02H 6EH 00H 6FH 00H 70H 00H 71H 00H 72H 00H 0FH 00H 27H 73H 00H
74H 00H 75H 00H 76H 00H 77H 00H 78H 00H 00H 00H 79H 00H 7AH 00H
01H 61H 00H 62H 00H 63H 00H 64H 00H 65H 00H 0FH 00H 27H 66H 00H
67H 00H 68H 00H 69H 00H 6AH 00H 6BH 00H 00H 00H 6CH 00H 6DH 00H
不難看出描述長文件名的目錄項中的一些規則:
在每個目錄項的32個字節中,(1)、偏移0H處:代表了長文件描述目錄項的序號,其中高4位如果爲0100則表示此項爲最後一個目錄項,低
4位表示此長文件名的目錄項的序號。如果此長文件名描述目錄只用到了1個目錄項,則此值爲41H,如果此值爲E5H代表此文件已被刪除;
(2)、偏移0BH~0CH處:其值總爲0FH 00H;(3)、偏移0D處:該長文件目錄項的標號,同一個長文件目錄的不同目錄項該值總相同(比如本
例中3個目錄項該值都爲27H);(4)、偏移1AH~1BH處:該值總爲00H 00H;(5)從偏移01H~1FH跳過前4項提到的字節,總是一個文件名的
ASCII碼接一個00H排列的,如果文件名的ASCII碼在一個目錄項還未寫完,則會接到下一個目錄項(實際上這些目錄項都是從高到低排列
的)同樣的位置繼續寫,如果已經寫完,則系統會在最後一個ACSII碼後寫00H,最多寫3個00H,如果3個00H寫完後,目錄項還有空餘位
置,則系統會把這些位置全部寫上FFH。
同時FAT32系統還有一個類似與FAT16的目錄項(緊接着長文件名的目錄的後面),同樣佔32個字節:
00H~07H 文件的文件名
08H~0AH 文件的擴展名
0BH 文件屬性
0CH 保留未用
0EH~0FH 文件創建時間
10H~11H 文件最後訪問日期
12H~13H 文件創建日期
14H~15H 文件起始簇號的高16位
16H~17H 系統最後修改時間,其中:
16H字節的0~4位是以2秒爲增量的秒
16H字節的5~7位和17H字節的0~2位是分鐘
17H字節的3~7位是小時
18H~19H 文件最後修改的日期,其中:
18H字節0~4位是天號
18H字節5~7位和19H字節0位是月份
19H字節的1~7位爲年號,0~119分別代表1980~2099
1AH~1BH 文件的起始簇號的低16位
1CH~1FH 文件的長度(單位爲字節)
注意:其中文件名爲DOS兼容文件名,比如上例中在DOS下的文件名爲ABCDEF~1.TXT;其首字節含義同FAT16系統;文件屬性字節含義同
FAT16系統;在FAT32系統中增加了最後訪問日期和文件創建時間日期,其計算原理同FAT16中的最後修改的時間和日期。
  其中第(4)至(8)項爲以後陸續定義的。對於子目錄項,其(12)爲零;已刪除目錄項的首字節值爲E5H。在可以使用長文件名的FAT32
系統中,文件目錄項保存該文件的短文件名,長文件名用若干個長文件名目錄項保存,長文件名目錄項倒序排在文件短目錄項前面,全部
是採用雙字節內碼保存的,每一項最多保存十三個字符內碼,首字節指明是長文件名的第幾項,11字節一般爲0FH,12字節指明類型,13字
節爲校驗和,26--27字節爲零
(四)擴展分區表
我們已經學習了在主引導扇區中的分區表的偏移04H,是分區系統標誌,當該值爲05H或0FH表示該分區爲擴展分區,其實它並非一個真正
意義上的分區項,此分區項只是指向一個擴展分區表,這樣做是爲了解決分區表中最多只能有4個分區項的問題,擴展分區表也是從擴展
分區表所在的扇區偏移1BEH~偏移1FD,該扇區0H~1BDH一般爲1BEH個00H,同樣要以結束標誌55H AAH結束。
同樣,在擴展分區表中也可能存在指向下一個擴展分區表的分區項。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章