SyntaxHighlighter

2013-06-09

3.5吋軟碟片FAT磁區解析-part.4 根目錄

位於根目錄區域和子目錄區域的目錄條目都是下面的格式:
位元組偏移長度描述
0x008DOS檔名(附加空格)
第一個位元組可以是下面的特殊數值:
0x00這個條目有用並且後面沒有被佔用條目
0x05最初字元確實是0xE5
0x2E'點'條目;'.'或者'..'
0xE5這個條目曾經被刪除不再有用。取消刪除檔案工具作為取消刪除的一步必須使用一個正常的字元取代它。
0x083DOS副檔名(空格補齊)
0x0b1檔案內容
第一個位元組可以是下面一些特殊值:
掩碼描述
00x01唯讀
10x02隱藏
20x04系統
30x08卷標
40x10子目錄
50x20檔案
60x40裝置(內部使用,磁碟上看不到)
70x80沒有使用

內容值0x0F用來表示長檔名條目。
0x0c1保留,NT使用(參見後面)
0x0d1建立時間,最小時間解析度:10ms單位,數值從0到199。
0x0e2建立時間。小時、分鐘和秒根據後面的圖示描述進行編碼:
描述
15-11小時(0-23)
10-5分鐘(0-59)
4-0秒/2(0-29)
注意只保存了2秒的解析度。更細解析度的檔案建立時間在偏移0x0d處。
0x102建立日期。年、月和日根據後面的圖示編碼:
描述
15-9年(0 = 1980, 127 = 2107)
8-5月(1 = 1月,12 = 12月)
4-0日(1 - 31)
0x122最近存取時間;參見偏移0x0e處的描述。
0x142FAT12和FAT16中的EA-Index(OS/2和NT使用),FAT32中第一個叢集的兩個高位元組
0x162最後更改時間;參見偏移0x0e處的描述。
0x182最後更改日期; 參見偏移0x10處的描述。
0x1a2FAT12和FAT16中的第一個叢集。FAT32中第一個叢集的兩個低位元組。
0x1c4檔案大小
長檔名(LFN)使用一個技巧儲存在FAT檔案系統上——在目錄表中添加假的條目。這些條目使用一個普通檔案無法使用的卷標內容標識,普通檔案無法使用是由於它們被大多數舊的MS-DOS程式忽略。很顯然,一個只包含卷標的目錄被當作空卷,這樣就允許刪除;使用長檔名建立的檔案在從普通的DOS刪除就會發生這樣的情形。

當是長檔名的時候,將會用下面表中的格式來登錄。

位元組偏移長度描述
0x001序列號
0x0110名稱字元(5個UTF-16字元)
0x0b1內容(永遠是0x0F)
0x0c1保留(永遠是0x00)
0x0d1DOS檔名校驗和
0x0e12名稱字元(6個UTF-16字元)
0x1a2第一個叢集(永遠是0x0000)
0x1c4名稱字元(兩個UTF-16字元)

最後須注意的是,舊型的系統因為不支援長檔名,所以通常讀到叢集數是0x0000的時候,就可以直接忽略掉它了


0 件のコメント:

人気の投稿