譯注:
剛完成的項目內容涉及FAT 文件系統,因此在查閱手冊的同時把文檔翻譯了一下,希望能對那些和我
一樣初次使用FAT 的朋友有所幫助。因本人對FAT 并不十分了解,翻譯所做的也只是文字表面工作,出現
各種錯誤在所難免,因此:本文只適用于初學者作為了解材料,需要獲得技術信息的朋友請查閱原版英文
資料!
發現錯誤的朋友請mail指正,本人將不勝感激。
原文長5頁,大意是告誡人們不要使用D 版云云,此略。
本文的一些約定
以字符“0x”開頭的數字為16進制,若開頭沒有字符“0x”則表明該數字為 10進制。
本文的程序使用C 語言書寫,書寫風格可能與教科書中嚴格定義的有所出入。
一些變量在程序中沒有注明其數據類型是 16-bit還是 32-bit,因為我們知道你有能力正確地完成這
些數據類型之間的轉換,并保證在轉換 32-bit 為 16-bit 的過程中不會造成數據丟失。同時請注意,所有
的數據類型均是無符號類型(UNSIGNED),不要嘗試使用有符號整形(signed integer types)來進行 FAT
運算,否則一些FAT 卷將會因此而出錯。
概述(適用于所有FAT 類型)
起先所有的FAT 文件系統都是為 IBM PC 機器而設計的,這說明了一個重要的問題:FAT 文件系統在磁
盤上的數據是以“小端” (little-endian) 結構存儲的。我們使用 4 個 8-bit 的字節 -- 起始字節為
byte[0],結束字節為 byte[3] -- 來存儲一個 32-bit 的 FAT 項(FAT entry)。然后分別給這 32 位編號為
00-31,從下表我們可以清楚地看到這 32位是如何排序的(最低位為00).
byte[3] 3 3 2 2 2 2 2 2
1 0 9 8 7 6 5 4
byte[2] 2 2 2 2 1 1 1 1
3 2 1 0 9 8 7 6
byte[1] 1 1 1 1 1 1 0 0
5 4 3 2 1 0 9 8
byte[0] 0 0 0 0 0 0 0 0
7 6 5 4 3 2 1 0
這對于那些使用“大端”(big-endian)存儲結構的機器就顯得尤為重要,因為在磁盤存取數據之前,
必須先完成big-endian 和 little-endian之間的轉換。
每個FAT 文件系統由4 部分組成,這些基本區域按如下順序排列:
0 – 保留區(Reserved Region)
1 – FAT區(FAT Region)
2 – 根目錄區(Root Directory Region, FAT32卷沒有此域)
3 – 文件和目錄數據區(File and Directory Data Region)
0.png (218.37 KB, 下載次數: 124)
下載附件
2017-9-13 15:47 上傳
完整的pdf格式文檔51黑下載地址(共24頁):
FAT32中文版.pdf
(1.36 MB, 下載次數: 107)
2017-9-13 12:03 上傳
點擊文件名下載附件
FAT32 下載積分: 黑幣 -5
|