官术网_书友最值得收藏!

基礎篇

本篇主要介紹 NTFS文件系統的基本特性和扇區存儲特征。同時,為了能與其他主流文件系統進行比較,以加深對NTFS文件系統的認識,本篇還介紹了FAT16和FAT 32兩種文件系統的基本特性,以及它們在硬盤扇區中的存儲規律。

NTFS文件系統雖然與兩種 FAT文件系統不同,但它們在扇區存儲規律上,還是有某些共通或相似的地方的。

本書講述的兩大主題,第一是使用作者編寫的WIN32工具程序,對硬盤扇區進行各種操作;第二是使用讀寫物理硬盤扇區的方法,去探索NTFS文件系統的扇區存儲規律。掌握了NTFS文件系統的扇區存儲規律,就能使操作者不受操作系統和文件系統的限制,實現一些用其他方法無法完成的操作目的。譬如從系統已被破壞的硬盤上恢復文件;排除一些常見的由于系統數據受損,而出現的硬盤邏輯故障;通過修改位圖文件的扇區數據,來達到隱藏機密文件的目的;移植被EFS加密的文件數據;移植被壓縮的文件數據;通過直接修改扇區的字節數據,取得原先沒有的操作權限,等等。

1FAT文件系統的數據結構

硬盤在分區以后,其每一個邏輯驅動器都必須建立起完整的數據結構,才能正常使用。FAT文件系統和NTFS文件系統的數據結構大部分都不相同,只在存儲系統分區數據的扇區上,有某些相同或相似的地方。

FAT文件系統的數據結構由6部分組成,分別是主引導記錄、主分區表或分區鏈表、分區引導記錄、文件分配表、文件目錄表和數據區。這里需要說明的是,主引導記錄和主分區表都只有一個,共同存儲在一個扇區中。如果使用CHS(柱面數、磁頭數、扇區數)尋址方式,這個扇區是0柱面0磁頭1扇區;如果使用線性尋址方式,這個扇區是0號扇區。從硬盤分區后的區域結構上劃分的話,該扇區可以認為是屬于第1個邏輯驅動器,也就是通常所說的C盤。而其他的邏輯驅動器就沒有主引導記錄和主分區表了,在這些邏輯驅動器所屬的第1個系統隱藏扇區上,只有分區鏈表。

NTFS文件系統的數據結構中,用于系統引導的部分基本與FAT文件系統相同,如主引導記錄、主分區表或分區鏈表、分區引導記錄這3部分。不過在這3部分中,很多字段的數據所表示的內容是完全不同的,只是都有相同的稱呼罷了。

FAT文件系統的另外3部分,即文件分配表、文件目錄表和數據區,在NTFS文件系統中則不存在。NTFS文件系統使用的是“磁盤上的任何事物都為文件”的存儲模式,甚至連系統使用的引導文件數據,都作為文件存儲在磁盤上。

了解文件系統的數據結構和扇區存儲規律,是對物理硬盤扇區進行讀寫操作的基礎,也是將扇區讀寫技術應用于系統修復和文件恢復的先決條件。因為一個硬盤上有很多邏輯驅動器,這些邏輯驅動器可能使用不同的文件系統,而對于不同的文件系統,讀寫與分析扇區數據的方法是完全不相同的。

本章先介紹FAT文件系統的數據結構。

1.1 主引導記錄

硬盤的主引導記錄也稱MBR,存儲在0柱面0磁頭1扇區。如果讀寫扇區時采用線性尋址方式,則該扇區的編號為“0”。在本書后面的章節里,扇區地址全部使用線性尋址方式來表示。該扇區的512字節有3部分內容,除了主引導記錄外,還有分區表和結束標志55 AA。

主引導記錄的作用非常重要,它是硬盤啟動時最先加載的扇區數據。下面通過分析硬盤的啟動過程,來說明它的重要性。

(1)計算機系統接通電源以后,主板BIOS加電進行自檢。自檢的內容很多,是一個很復雜的過程,這里只介紹與硬盤有關的部分。

(2)將硬盤第1個扇區,也就是0柱面0磁頭1扇區(線性尋址時是0號扇區)的內容

讀入內存。

(3)檢查結束標志,也就是扇區最后兩個字節的值是否等于“aa55H”(存儲順序是低字節在前,高字節在后)。若不等則打印屏幕提示,然后死機。

(4)執行主引導記錄中的程序,將控制權轉交給主引導程序。

(5)主引導程序首先將自己讀入內存,然后查找在分區表中是否有活動分區。找到活動分區以后,將分區引導記錄讀入內存。

(6)檢查結束標志是否等于“aa55H”,然后執行分區引導記錄中的啟動程序,將控制權交給操作系統。

(7)操作系統加載系統文件,計算機啟動。

通過對以上過程的分析可以看出,如果主引導記錄不正常,后面所有的啟動過程都不可能正常執行。

有一種特殊情況,使計算機啟動過程的前兩步與上面介紹的不一樣。如果硬盤上安裝了多系統引導軟件,如Partition Magician分區軟件,則該軟件將主引導記錄替換成自己的一段程序。這段程序將BIOS引向軟件設置的專用分區,然后根據操作者的選擇激活某一個分區,再進入正常的啟動過程。類似Partition Magician這樣的分區軟件還有很多,它們各有自己的特點,這些第三方軟件都不在本書的討論范圍之內。通常情況下,一塊硬盤上只有一個主引導記錄。

現在用“讀硬盤扇區數據.EXE”程序將一塊硬盤的主引導記錄讀出,程序運行界面如圖1-1所示。“讀硬盤扇區數據.EXE”程序將在《工具篇》中介紹,現在先使用該程序的運行結果。

圖1-1

圖1-1所示的左圖是程序運行的主窗口。在主窗口的編輯框中顯示了數值“10084”,這是主引導記錄所在扇區中,全部字節的累加算術和。為什么要取這個數值的原因將在《工具篇》中詳細說明。

圖1-1所示的右圖是程序運行后彈出的對話框。該對話框中顯示了512字節的十六進制值,每行顯示16字節,共顯示32行。

在圖1-1中,位移從00H到1bdH就是主引導記錄。如果用扇區內的字節編號來表示某一字節,設起始號為1,就是從第1到第446字節。為什么要使用位移和扇區內編號這兩種計算方式呢?因為在今后分析扇區數據時,或者是手工編制扇區中的字節數據時,某些場合用編號計算是比較方便的。

譬如在《工具篇》中介紹的“修改扇區文件數據.EXE”程序,可以將每個扇區的512字節,按照每行16字節,一共32行的格式顯示在屏幕上。如果從1開始編號,則感覺很有對稱性,容易查找某一字節。如果用位移值計算,就感覺不太方便。

字節位移是從0開始計數,而字節編號是從1開始編號,所以對同一字節來說,字節編號的值要比字節位移的值大1。

位移從1beH到1fdH是分區表,字節編號為447到510。有關分區表的內容在下一節討論。

最后兩字節是結束標志“55 AA”。因為兩字節組成一個字,寫入磁盤的順序是低字節在前,高字節在后,所以“55 AA”寫成十六進制應為“aa55H”。

結束標志“55 AA”是查找系統數據扇區的標志,據此對扇區進行搜索,可用于尋找主引導記錄、主分區表或分區鏈表所在的扇區地址,也可以具此查找分區引導記錄的扇區地址。

主引導記錄扇區所在的磁道,通常稱為0磁道,它屬于隱藏磁道,這個磁道的63個扇區屬于隱藏扇區。操作系統的所有命令,除了FDISK以外都不能訪問它們。就連格式化程序FORMAT,對這些隱藏扇區也無能為力。

主引導記錄和主分區表的數據,只占用了0磁道的第1個扇區,系統對其他的62個扇區棄之不用。正因為如此,0磁道的剩余62個扇區就成了一些病毒程序代碼、操作系統的引導代碼、應用軟件用于自我保護的識別標記、BIOS功能擴展程序代碼的棲息之地。

經常監測并分析0磁道的扇區數據變化,就能發現很多不為人知的秘密,作者舉一例來說明這個問題。

美國的MACROMEDIA公司堪稱網頁制作軟件的鼻祖,該公司的三大軟件頗具影響力。這三款軟件是:網頁制作軟件DREAMWEAVER MX、圖象處理軟件FIREWORKS MX和動畫制作軟件FLASH MX。

這三款軟件有試用版,從操作者安裝使用開始,時間限制為30天。超過試用期后,軟件就不能運行了。即使重新安裝操作系統和這三款軟件,甚至將硬盤格式化或重新分區,也無濟于事。

那么這三款軟件采用了什么保護機制呢?作者通過對0磁道扇區數據的監測,發現了這三款軟件的一個秘密。

這三款軟件中的每一款軟件安裝以后,都會向0磁道的第32扇區寫入一部分識別代碼。當操作者對邏輯盤進行格式化,或是對整個硬盤重新分區時,所運行的程序都不會訪問第32扇區,所以軟件的時間限制仍然有效。

作者用扇區清零程序將32扇區的數據清掉,然后再安裝這三款軟件的試用版,則可以繼續使用了。

采取這種保護方式的軟件還有很多,只要經常監測0磁道并用心去分析,就能發現許多不為人知的秘密。

下面用作者使用的兩塊硬盤運行“監視0磁道變化.EXE”程序,將兩塊硬盤的0磁道63個扇區的數據分別讀出,然后進行比較。所使用的工具程序在《工具篇》中再詳細介紹。

先看一塊新硬盤的顯示數據,如圖1-2所示。

圖1-2

圖1-2所示的扇區編號沒有使用線性尋址的表示方法,而是使用了1~63的編號方式,這是為了強調在硬盤的結構中,每磁道有63個扇區的虛擬物理概念。

從圖1-2所示的扇區字節算術和可以看出,只有第1扇區寫有數據,其他62個扇區全部為0。這是因為該硬盤使用不久,還沒有寫入其他程序的垃圾代碼。

再看一塊老硬盤的顯示數據,如圖1-3所示。

圖1-3

如圖1-3所示,除了第1扇區寫有系統引導數據以外,還有很多扇區也寫有數據。與第1扇區字節算術和相同的,如第6扇區,是作者備份的系統數據,目的是日后出現引導故障時修復硬盤。與第1扇區字節算術和不相同的扇區,就是硬盤使用三年多來,各種應用軟件寫入的垃圾代碼。

1.2 主分區表

主分區表占用0號扇區(線性尋址)的64字節,位移從1beH到1fdH,字節編號為447到510。它共有4個分區表項,每個分區表項占16字節。一般只使用2個分區表項,另外2個分區表項全為0。分區表項的格式見表1-1。

表1-1分區表項各字段值的內容

注:偏移量和字節編號是第1個分區表項的值,后面的分區表項按照相同的規律遞增。

通常說的分區表指的是主分區表,另外在擴展分區的每一個邏輯驅動器中,都有一個分區鏈表,對它們的解讀方法基本是相同的。

下面將圖1-1所示的兩個分區表項單獨列出來進行分析。

分區表項一。(位移1beH至1cdH,編號447到462)

第1個分區表項記錄的是本分區的有關參數。

將16字節按表1-1的格式分為8段,分別進行說明。

第1、2、4、5段與表中的內容一樣,不必重復。

第3段是2字節,表示扇區值和柱面值,因為本書介紹的工具程序使用線性尋址方式,所以對本字段的內容就沒有必要詳細解讀了。

第6段是2字節,也表示扇區值和柱面值。

第7段是一個雙字,存儲順序低字節在前,高字節在后,寫成十六進制是“0000003fH”,十進制是“63”。

第8段是一個雙字,它的值是十六進制為“003ffa86H”,十進制為“4192902”。

分區表項二。(位移1ceH至1ddH,編號463到478)

第2個分區表項記錄的是下一分區的有關參數。

將16字節按表1-1的格式分為8段,各字段的解讀方法與第1個分區表項相同,就不重復說明了。

分區鏈表的字段組成與解讀方法與主分區表基本相同,讀者可自行分析研究。需要說明的是,最后一個邏輯驅動器的分區鏈表中,只使用了1個分區表項,其他3個分區表項的字節數據全為0。

1.3分區引導記錄

硬盤的主引導記錄只有一個,存儲在硬盤的線性0號扇區上。而硬盤的分區引導記錄不止一個,每一個邏輯驅動器都有一個分區引導記錄。如果將一個硬盤分為C、D、E、F、G5個邏輯驅動器,就應該有5個分區引導記錄,分別存儲在各個邏輯驅動器的第1個邏輯扇區中。

分區引導記錄主要由4部分組成。

(1)BIOS參數記錄塊BPB(BIOS Parameter Block)。

(2)磁盤標志記錄表。

(3)分區引導記錄代碼區。

(4)結束標志“55 AA”。

與本書內容相關的是第1和第4部分,對第2和第3部分不進行討論。

BIOS參數記錄塊BPB(簡稱BPB表)所記錄的有關參數,能幫助操作者確定分區的容量大小、文件分配表FAT的位置和大小、文件目錄表FDT的位置。BPB表的結構與使用的文件系統有關,本節討論FAT16和FAT32兩種文件系統的BPB表結構。

結束標志“55 AA”是系統識別引導扇區的標識,也是使用工具程序對硬盤扇區進行搜索,用于尋找分區引導記錄所在扇區地址的依據。

1.3.1 FAT16文件系統的BPB表

FAT16文件系統BPB表從扇區字節位移0bH開始,用字節編號計算,就是第12字節, BPB表共占用25字節。

FAT16文件系統BPB表的結構見表1-2。

表1-2 FAT16文件系統BPB表的結構

下面用“讀硬盤扇區數據.EXE”程序將一個邏輯驅動器的引導記錄讀出來,然后結合表1-2進行分析,程序運行界面如圖1-4所示。

圖1-4

BPB表占用的字節數較多,各個字段值所表示的內容也較為復雜。為了便于分析,下面將BPB表的內容單獨列出來。

從第12字節開始,將25字節按表1-2的格式分為12段,分別進行說明。

第1段是1個字,它的值為200H,等于512,說明每個扇區有512字節。

第2段是1字節,值為64,說明每個簇包含64個扇區,則每個簇的字節數是:

64×512=32768。關于簇的概念,在后面有關章節中再作介紹。

第3段是1個字,值為1,說明有1個保留扇區。

第4段是1字節,值為2,說明有2個FAT表。

第5段是1個字,值為512,說明有512個根目錄登記項數。因為每個根目錄登記項固定占用32字節,據此可算出FDT表總共占用32個扇區。

第6段是1字,在硬盤中設為0。

第7段是1字節,固定為f8H。

第8段是1個字,值為256,說明每個FAT表占用256個扇區。

第9段是1個字,值為63,說明每個磁道劃分成63個扇區。

第10段是1個字,值為255,說明磁頭數最大是255,這個數值的含義需要進一步解釋。這個參數并不是硬盤的物理磁頭數,它是BIOS磁盤服務程序為了管理大容量硬盤,采用位移變換后形成的值。在CHS扇區尋址方式中,柱面用10位二進制數表示,其最大值為1024。硬盤的柱面數一般都超過了1024,因此BIOS磁盤服務程序采用了減少柱面數,增加磁頭數的移位算法。

舉例說明一下,假如一個硬盤有8192個柱面和16個磁頭。很明顯在CHS尋址方式中,無法表示全部柱面數。這時由BIOS磁盤服務程序將柱面數換算成8192÷8=1024,將磁頭數換算成16×8=128。這樣既保證硬盤的容量不變,又能使操作系統或應用程序訪問到所有的硬盤扇區。

第11段是1個雙字,值為63,說明有63個隱藏扇區。

第12段是1個雙字,值為4192865,這是邏輯驅動器的總扇區數,但它不包含第11段中的隱藏扇區數。

1.3.2 FAT32文件系統的BPB表

FAT32文件系統BPB表也從扇區字節位移0bH開始,占用53字節。因為FAT16文件系統中的有些磁盤參數在FAT32文件系統中已不適用,必須進行擴充。具體做法是將FAT16文件系統中使用的25字節仍然保留,適用的數據項繼續使用,需要擴充的數據項移到后面的28字節里去。目前這28字節只使用了很少一部分,剩下的字節全為0,供系統繼續擴充時使用。

FAT32文件系統BPB表的結構見表1-3。

表1-3 FAT32文件系統BPB表的結構

現在將使用FAT32文件系統的一個邏輯驅動器的引導記錄讀出來,結合表1-3進行分析。程序運行界面如圖1-5所示。

圖1-5

為了便于分析,將BPB表內容分兩部分單獨列出來,分段進行介紹。

(1)前25字節。

與FAT16的BPB表相同的數據項不再分析,只分析不同的部分。

第2段的值是8,即每簇有8個扇區。可以看出FAT32的簇比FAT16的簇小得多,這就是FAT32能夠節省磁盤空間的原因。因為數據是按簇存儲的,即使一個很小的文件也必須至少分配給它一個簇的存儲空間,這個簇里沒有使用的扇區就不能再分配給其他文件使用了。而FAT16的簇比較大,所以浪費的磁盤空間就多一些。

第3段的值是32,即保留了32個扇區。因為FAT32文件系統的引導記錄要占用多個扇區,所以將原來的1個保留扇區增加到32個。

第5段和第8段因需要擴充,所以棄之不用,將有關數據轉移到后面的28字節里去。

(2)后28字節。

第1段的參數是每個FAT表占用的扇區數,值是7994。可以看出FAT32文件系統的簇雖然小了,但FAT表占用的扇區數卻增加了很多。這就是FAT32文件系統的文件檢索速度比FAT16文件系統慢的原因。

第3段是根目錄起始簇號,值為2。有2個簇被系統占用。

第5段的值是6,說明引導記錄占用6個扇區。

1.4文件分配表FAT

FAT文件系統在管理磁盤上的用戶文件時,使用了文件分配表的管理方式。不過系統引導所需要的數據,不在文件分配表的管理范圍之內。在這一點上與NTFS文件系統的存儲方式是完全不相同的,NTFS文件系統將磁盤上的所有事物都看作文件,不管是用戶的還是系統的。

文件分配表在FAT文件系統中占有非常重要的地位,對文件的所有操作,包括讀、寫、修改和復制,都要依賴于文件分配表中的有關記錄。正因為如此,當初設計者將文件分配表作了兩份相同的拷貝存儲在磁盤上。

1.4.1扇區分簇管理

操作系統或應用程序在將數據寫入一個磁盤文件時,必須在磁盤上找到可以使用的未用扇區。反過來要將數據從磁盤文件中讀出時,也要在磁盤上找到已經儲存了相應數據的有關扇區。要查找扇區必須知道扇區的地址,文件分配表FAT就是記錄扇區地址的。

因為硬盤的扇區非常多,如果將每個扇區的地址都記錄在文件分配表里,勢必造成文件分配表體積龐大,查找時效率將會很低。為解決這個問題,采用了將扇區分組管理的方法。分組的過程稱作扇區分簇,是由高級格式化程序在格式化磁盤時完成的。

扇區分簇以后,將每個簇的地址記錄到文件分配表FAT里去。由于一個簇能包含很多扇區,所以文件分配表的體積減小了,查找的速度就提高了。

一個簇能包含多少扇區,是由文件系統和分區的大小決定的,在使用FAT16和FAT32兩種文件系統時,分區大小和簇大小以及每簇扇區數的關系見表1-4。

表1-4分區大小與簇的對應關系

1.4.2 簇鏈和文件檢索過程

當使用一個新格式化的邏輯驅動器時,文件數據存放的簇號是連續的。使用一段時間以后,由于經常對文件進行刪除、拷貝和修改操作,每個文件分配的簇號就不一定是連續的了。為了確保在存取文件時能夠檢索到所有連續或不連續的扇區地址,文件分配表采用了“簇鏈”的記錄方式。

當需要從磁盤上讀取一個文件時,首先從文件目錄表中找到該文件的目錄登記項。繼而從目錄登記項的有關字段,查到分配給該文件的第一個簇號,根據第一簇號的內容可以計算出兩組數據。

其中一組數據指出了文件在數據區DATA里的第一簇扇區首地址,從第一簇扇區首地址開始,數據是連續存放的,連續存放多少個扇區由分區格式和分區大小決定,表1-4中列出了它們的對應關系。

另外一組數據指出了FAT表內簇登記項的地址,如果其值是結束標志“ffffH”(FAT16格式)或“0fffffffH”(FAT32格式),說明文件至此已經結束。如果不是結束標志,則該登記項的值為第二個簇號,據此又可以計算出兩組數據,繼而確定文件在數據區里第二簇扇區首地址和FAT表內第二個簇登記項的地址。

繼續重復上面的過程,就可以得到文件在DATA區里的全部數據,以及文件在FAT表里所有簇登記項的地址。

詳細了解文件數據存取的全過程,就可以從遭到破壞、不能啟動的硬盤上,利用讀取物理硬盤扇區的工具程序把文件數據讀出來。

當需要在磁盤上建立一個新文件時,首先順序檢索FAT表,找到第一個可用簇,可用簇登記項的值為“0000H”(FAT16)或“00000000H”(FAT32)。將該簇作為起始簇,寫入文件目錄表FDT的相關登記項的起始簇字段中。然后繼續檢索后面的可用簇,找到以后將其簇號寫入第一個可用簇項內。

按照以上過程進行下去,將滿足文件長度所需的簇數全部找到。使每一個簇項的值指向下一個所需簇項,在最后的簇登記項內寫入結束標志“ffffH”(FAT16)或“0fffffffH”(FAT32),于是一條能夠檢索整個文件的“簇鏈”就形成了。

當需要對文件進行擴展時,先檢索FAT表,找到1可用簇。將簇項的內容置為結束標志,并將文件原來的最后簇項值修改為指向此可用簇。以此類推,直到滿足文件的全部擴展要求。

當刪除文件時,除了將文件目錄表中登記項的第1字節改為e5H,還要把該文件在FAT表的“簇鏈”中所對應的簇項全部清零,這些被清零的簇項又可以供其他文件使用。不過在刪除文件的操作結束以后,目錄登記項的其他字段仍然保存完好,只是文件名的第1字節變成了e5H,并且文件存儲在扇區里的所有數據仍然存在。這時只要FAT表中被清零的簇項沒有被新文件使用,就可以運行相關軟件恢復被刪除的文件。

FAT表記錄了磁盤文件對磁盤使用情況的信息,其中包含所有未分配的、已分配的或標記為壞的盤簇的信息。

FAT表只記錄磁盤文件對磁盤的占用信息,對于系統保留的控制信息并不由FAT表中的盤簇表示。這些保留信息包括引導扇區、分區表、FAT表本身占用的扇區以及文件目錄表FDT占用的扇區。

1.4.3 FAT表扇區尋址

FAT表在磁盤文件系統中的地位是非常重要的,為了使磁盤文件的操作安全可靠,文件系統的設計者們制訂了兩個內容相同的FAT表。雖然當第一個FAT表出錯時,操作系統并不利用第二個FAT表去修復它,但技術人員可以使用有關的軟件,用第二個FAT表去修復它。

當硬盤的系統控制信息遭到輕微的破壞時,可以通過各種方法去修復它。如上面所講的四部分系統保留信息,在某一部分出現錯誤時,可以采用從其他計算機上移植的方法,或是采用手工編制扇區數據的方法進行修復。

但是當這些控制信息嚴重損壞,譬如分區表鏈和分區引導記錄嚴重損壞時,上述方法就無能為力了。一般來說,在這種情況下只有重新分區、格式化,硬盤上的所有數據也就全部丟失了。

硬盤的系統控制信息遭到破壞時,一般情況下FAT表被破壞的可能性比較小。特別是第2個FAT表一般能夠保存完好,因為第2個FAT表很少受到應用程序的訪問。這時如果使用物理硬盤扇區的讀寫技術,就有可能從硬盤上恢復出重要數據來。這種操作的對象是針對整個硬盤,而不用考慮硬盤的分區情況,也不用考慮硬盤上安裝的是什么操作系統。

查找FAT表首扇區地址的方法很簡單,可以根據FAT表的特征標記,使用查找扇區特征的工具程序進行查找。不管是FAT16文件系統還是FAT32文件系統,每個FAT表的首扇區里前兩字節都是F8 FF。

1.5文件目錄表FDT

操作系統為了管理磁盤上的目錄和文件,在特定的扇區上建立了一個文件目錄表FDT,它是由高級格式化程序FORMAT在格式化磁盤時建立的。

FAT16分區格式的FDT表占用固定的32個扇區,扇區地址緊跟在第2個FAT表之后。FAT32分區格式沒有固定的FDT表,在第2個FAT表之后就是數據區DATA。目錄名和文件名也作為數據對待,存放在數據區內。

兩種分區格式都使用一個32字節長的“目錄登記項”,來說明目錄或文件的有關特性。FAT16分區的目錄登記項存放在FDT表里,FAT32分區的目錄登記項存放在數據區里。表1-5列出了目錄登記項的各字段內容。

表1-5目錄登記項各字段值的內容

表1-5將一個目錄登記項的32字節劃分為8個字段,下面對其中比較重要的字段進行分析。

第1段是文件名,占用8字節。如果一個文件名不足8字節,則不足的部分填充空格,文件名與擴展名中間的圓點忽略。

第2段是文件擴展名,同樣遵守上述規定,不過擴展名不足3個字符的情況較少。

第4段對FAT16和FAT32兩種文件系統有所不同,FAT32因為需要管理大于16位的簇,所以將簇的高16位存儲在這個字段中,低16位的存儲位置與FAT16相同。

第7段是文件的起始簇號,FAT文件系統一系列的尋址過程都是由此開始的。

第8段用一個雙字記錄文件的字節長度。

1.6數據區DATA

數據區DATA的所有扇區都劃分成以簇為單位的邏輯結構,每一個簇在FAT表里都有一個簇登記項與之對應。

在對硬盤的引導故障進行修復時,一般只訪問主引導記錄、分區表和分區引導記錄,極個別的情況下可能訪問到FAT表和FDT表,而DATA區是訪問不到的。

FAT16文件系統的DATA區緊接在FDT表之后。FAT32文件系統因為沒有FDT表,所以緊接在第二個FAT表之后的就是DATA區。

主站蜘蛛池模板: 西乡县| 衢州市| 繁昌县| 镇沅| 宁都县| 浦县| 澎湖县| 阿拉善右旗| 峡江县| 松阳县| 竹山县| 巫山县| 高要市| 开原市| 元朗区| 和平区| 读书| 铜川市| 台山市| 金秀| 玛沁县| 北流市| 讷河市| 华池县| 建平县| 简阳市| 兰溪市| 黄陵县| 房产| 屯留县| 黄龙县| 新河县| 泰宁县| 临武县| 全椒县| 富裕县| 穆棱市| 成武县| 商都县| 东乌珠穆沁旗| 应城市|