位於根目錄區域和子目錄區域的目錄條目都是下面的格式:
位元組偏移 | 長度 | 描述 |
0x00 | 8 | DOS檔名(附加空格)
第一個位元組可以是下面的特殊數值:
0x00 | 這個條目有用並且後面沒有被佔用條目 |
0x05 | 最初字元確實是0xE5 |
0x2E | '點'條目;'.'或者'..' |
0xE5 | 這個條目曾經被刪除不再有用。取消刪除檔案工具作為取消刪除的一步必須使用一個正常的字元取代它。 |
|
0x08 | 3 | DOS副檔名(空格補齊) |
0x0b | 1 | 檔案內容
第一個位元組可以是下面一些特殊值:
位 | 掩碼 | 描述 |
0 | 0x01 | 唯讀 |
1 | 0x02 | 隱藏 |
2 | 0x04 | 系統 |
3 | 0x08 | 卷標 |
4 | 0x10 | 子目錄 |
5 | 0x20 | 檔案 |
6 | 0x40 | 裝置(內部使用,磁碟上看不到) |
7 | 0x80 | 沒有使用 |
內容值0x0F用來表示長檔名條目。
|
0x0c | 1 | 保留,NT使用(參見後面) |
0x0d | 1 | 建立時間,最小時間解析度:10ms單位,數值從0到199。 |
0x0e | 2 | 建立時間。小時、分鐘和秒根據後面的圖示描述進行編碼:
位 | 描述 |
15-11 | 小時(0-23) |
10-5 | 分鐘(0-59) |
4-0 | 秒/2(0-29) |
注意秒只保存了2秒的解析度。更細解析度的檔案建立時間在偏移0x0d處。
|
0x10 | 2 | 建立日期。年、月和日根據後面的圖示編碼:
位 | 描述 |
15-9 | 年(0 = 1980, 127 = 2107) |
8-5 | 月(1 = 1月,12 = 12月) |
4-0 | 日(1 - 31) |
|
0x12 | 2 | 最近存取時間;參見偏移0x0e處的描述。 |
0x14 | 2 | FAT12和FAT16中的EA-Index(OS/2和NT使用),FAT32中第一個叢集的兩個高位元組 |
0x16 | 2 | 最後更改時間;參見偏移0x0e處的描述。 |
0x18 | 2 | 最後更改日期; 參見偏移0x10處的描述。 |
0x1a | 2 | FAT12和FAT16中的第一個叢集。FAT32中第一個叢集的兩個低位元組。 |
0x1c | 4 | 檔案大小 |
長檔名(LFN)使用一個技巧儲存在FAT檔案系統上——在目錄表中添加假的條目。這些條目使用一個普通檔案無法使用的卷標內容標識,普通檔案無法使用是由於它們被大多數舊的MS-DOS程式忽略。很顯然,一個只包含卷標的目錄被當作空卷,這樣就允許刪除;使用長檔名建立的檔案在從普通的DOS刪除就會發生這樣的情形。
當是長檔名的時候,將會用下面表中的格式來登錄。
位元組偏移 | 長度 | 描述 |
0x00 | 1 | 序列號 |
0x01 | 10 | 名稱字元(5個UTF-16字元) |
0x0b | 1 | 內容(永遠是0x0F) |
0x0c | 1 | 保留(永遠是0x00) |
0x0d | 1 | DOS檔名校驗和 |
0x0e | 12 | 名稱字元(6個UTF-16字元) |
0x1a | 2 | 第一個叢集(永遠是0x0000) |
0x1c | 4 | 名稱字元(兩個UTF-16字元) |
最後須注意的是,舊型的系統因為不支援長檔名,所以通常讀到叢集數是0x0000的時候,就可以直接忽略掉它了
0 件のコメント:
コメントを投稿