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