fat16檔案系統的fdt分析
1:fdt位置
fdt的含義為檔案目錄表,它在乙個檔案系統中的具體位置是緊跟在fat2之後。
定位過程:
a:系統通過讀取該分割槽表資訊,定位到其dbr扇區
b:讀取dbr的保留扇區數(oeh –0fh).
c:讀取每個fat扇區數(16h – 17h)
d:讀取fat表的個數保留扇區當數 + fat個數 * 每個fat扇區數
fdt的資料內容
fat16檔案系統目錄項分析
1:目錄項的作用及結構特點
目錄項對於fat檔案系統來講也是很重要的乙個組成部分,其主要及結構特點如下
a:分割槽中的每乙個檔案中資料夾都被分配乙個大小為32位元組的目錄項,用心描述檔案或資料夾的屬性,大小,起始簇號和時間,日期等資訊,那當然也有檔案或資料夾的名字
b:在fat檔案系統中,目錄被視為特殊型別的檔案,所以每乙個目錄也跟檔案一樣有目錄項。
c:在fat16檔案系統下,分割槽根目錄下的檔案及資料夾的目錄項存放在fdt中,分割槽子目錄下的檔案及資料夾的目錄項存放在資料區中相應的簇中。
d:根據目錄項的作用及特點,可以把目錄項分為四類
短檔名目錄項長檔名目錄項「.」目錄項和「..」目錄項卷標目錄項
2:短檔名目錄項
所謂的短檔名是指dos和windows 3.x時代檔名的傳統格式即「8.3」格式。在這種格式的限制下,使用者在給檔案起名字的時候,主檔名不能超過8個字元,並且不支援中文。在這種格式下,檔案目錄項中只需要記錄8 + 3 = 11位元組就可以儲存檔名了,(主檔名與副檔名之間的「.」是預設的,不有記錄),這種格式的目錄項就是短檔名目錄項.
fat16
短檔名目錄項的含義
位元組偏移
字段長度
字段內容及含義
0x008
主檔名0x083
檔案的副檔名
0x0b
1 檔案屬性
00000000(讀/
寫)0x00
00000001
(唯讀)
0x01
00000010
(隱藏)
0x20
00000100
(系統)
0x40
00001000
(卷標)
0x08
00010000
(子目錄)
0x10
00100000
(存檔)
0x20
0x0c1
未用0x0d1
檔案建立時間精確到
10ms的值
0x0e2
檔案建立時間,包括時,分,秒
0x102
檔案建立日期,包括年,月,日
0x122
檔案最近訪問日期,包括年,月,日
0x142
未用0x162
檔案修改時間,包括時,分,秒
0x182
檔案修改日期,包括年,月,日
0x1a2
檔案的起始簇號
0x1c4
檔案大小(以位元組為單位)
引數詳細分析
(1) 主檔名
檔名用不完8個位元組,後面用空格(0x20)填充。
另外該位置的第乙個位元組也用來表示目錄項的分配狀態,當這個位元組為 0x00時,表示該目錄從未用過,當這個位元組是
0xe5
時,表示該目錄項曾經使用過,但目前已經被刪除。
(2) 副檔名
沒有副檔名的用空格填充
(3) 檔案屬性
檔案的各種屬性,表示的方法是按二進位制位定義,最高兩位保留未用,
(4) 未用
(5) 檔案建立時間精確到10ms的值
檔案在建立時的時間值中精確到10ms的值用該位元組表示。例如:86h,十進位制為134,所以檔案建立的時間為1340ms,即1.34s.
(6) 檔案建立時間
a:0-4位,這5位記錄秒的值,單位是2s,也就是把這四位的值乘以
2,才是秒的值,其取值範圍為0-29.
b:5-10位,這6位記錄分的值,其取值範圍為0-59.
c:11-15位,這5位記錄時的值,其取值範圍為0-23
計算出來的值再加上1340ms。才是檔案最終的建立時間。.
(7) 檔案建立日期
a:0-4位,這5位記錄日的值,其取值範圍為0-31
b:5-8位,這4位記錄月的值,其取值範圍為0-12.
c:9-15位,這7位記錄年的值,其取值相對於2023年開始計數的,其值必須加上1980。
(8) 檔案最近訪問日期
同檔案建立日期演算法一樣
(9) 未用
(10) 檔案修改時間略
(11) 檔案修改日期略
(12) 檔案起始簇號
是指檔案的內容所在的第乙個簇號
(13)檔案大小以位元組大小為單位小端儲存
3:長檔名目錄項
為了相容dos與winddows 3.x在winddows 95以上的系統中,超過8.3格式的檔案或目錄實際儲存著兩個名字,乙個短檔名和乙個長檔名。當建立乙個長檔名時,其對應的短檔名的處理有以下三個原則:
a:系統取長檔名的前6個字元加上「~1」,形成短檔名,其副檔名保持不變
b:如果已經存在這個名字的檔案,數字自動加1,「~2」
c:如果有dos與winddows 3.x的非法字元,以「_」替代。
長檔名儲存時,其屬性值為 ofh,能夠儲存13個字元,如果檔名很長,乙個長檔名需要多個目錄項,這些目錄是倒序排放在其短檔名的前面。
fat16長檔名目錄項的含義
位元組偏移
字段長度
字段內容及含義
0x00
序列號0x01
檔名的第1-5個unicode碼字元
0x0b
屬性標誌 ofh固定值
0x0c
保留未用
0x0d
短檔名檢驗和
0x0e
檔名的第6-11個unicode碼字元
0x1a
始終為0
0x1c
檔名的第12-13個unicode碼字元
特殊說明
(1) 序列號
0-4位描述了長檔名目錄項的順序號
6位若為1,則表明是目錄項的最後一項
如果檔案被刪除,該位元組會改為「e5」。
(2) 檔名字元
如果檔名已經記錄完,但該引數的空間中還有未用的位元組,就會在檔名最後乙個字元填充兩個00h,隨後未用的填充ffh
(3) 短檔名檢驗和
長檔名目錄項通過這個檢驗和將其與短檔名目錄項關聯起來。檢驗和是通過短檔名計算而來的,同一長檔名的檢驗和必須一致。
校驗和的計算方法是依次將短檔名的各個字元對應的二進位制相加,在每一步相加之前先將二進位制的值依次向右移動一位,最右邊的位迴圈移動到最左邊,然後再加上下乙個字元所對應的二進位制值,直到把最後乙個字元加完。
4:「.」目錄項(當前目錄)和「..」目錄項(上級目錄)
在子目錄所在的檔案目錄項區域中,總有兩個特殊的目錄,「.」目錄項和「..」目錄項可以用dos命令的dir檢視到。
說明a:「.」目錄項所描述的起始簇號,是子目錄本身所在簇號,
c:這兩個目錄都大小被設定0,同其他的資料夾目錄項一樣。
系統利用「.」目錄項(當前目錄)和「..」目錄項實現目錄之間的雙向聯絡,從而把整個檔案系統聯絡在一起。
5:卷標目錄項
卷標可以被隨時修改,存放在fdt中,
a:卷標屬於短檔名,最大支援11個字元。
b:不記錄起始簇號與大小
c:不記錄建立時間和最後訪問時間,只記錄修改時間
FAT16檔案系統
fat16檔案系統 yoyoone 1.基本知識 扇區 每個磁軌被分為若干個弧段,這些弧段就是扇區。通常情況下,每個扇區512個位元組。簇 fat將磁碟空間按一定數目的扇區為單位進行劃分,這樣的單位稱為簇。簇的大小一般為2的n次方。2.fat16表的組織形式 使用fat檔案系統必須具有幾個部分 保留...
FAT16檔案系統簡介 一
我們在前面已經完成了主引導扇區程式的編寫。通過主引導記錄,我們已經實現了裝入分割槽引導扇區執行的操作。和主引導扇區一樣,分割槽引導扇區也只有區區 512 個位元組,根本不可能放得下所有的 來將以作業系統核心裝入記憶體,完成重定位工作並設定核心的執行環境。應次,分割槽引導扇區也只能做一件事,那就是把真...
fat16 檔案系統的結構
fat檔案系統在windows比較常見,相對於ext系統而言,也比較簡單。是學習檔案系統的切入點。首先先了解下fat16檔案系統的基本結構依次為 dbr扇區 fat表1 fat表2 根目錄和資料區。dbr扇區 dbr 是作業系統可以直接訪問的第乙個扇區,包括乙個引導程式和乙個稱為 bpb的本分割槽引...