精華區beta CSSE 關於我們 聯絡資訊
※ 引述《CuckooBoy (阿書)》之銘言: : : 簡單講一講, 不懂就去參考這份FAT32 File System Specification : : 網址是 http://0rz.tw/f92BG : : 認真讀完就保證一定懂. 我真的強烈建議你要先看完上面所列的那份文件, 你的問題在裏面就講得很清楚. : 這樣說對嗎....? : 我用WinHex軟體,看一個1G容量的CF卡的儲存裝置 : 1. 從BDB知道... : 0B~0C:每一磁區的位元組數(此例為 512) : 0D:每一磁叢所佔磁區數(此例為 8) : 2. 從FDB知道... : 1C~1F:檔案大小(此例為 000003=3個位元組) : 1A~1B:磁叢指位器(此例為 000003=3) : 由以上兩點.. : 知道檔案內容 在磁叢 3 : 磁叢從2開始 : 所以3-2=1 資料內容與FDB差 1個磁叢差=8個磁區=512*8=4096位元組=十六進制的1000 : FDB第一筆資料在1EA000 : 所以內容在1EA000+1000=1EB000開始 : 檔案大小為3個位元組 : 所以1EB000~1EB002 就是我的檔案內容? : 如果,我講對,那我有個問題....FAT1不是記錄著每一個檔案或次資料夾在磁區的那 : 一個cluster 位置之資訊嗎? : 我的FAT1像下面這樣,好像跟我所講的沒什麼關聯,看不出所以然,用不上的感覺..... : F8 FF FF 0F FF FF FF FF FF FF FF 0F FF FF FF 0F : 00 00 ........................................ 就你文中有寫到FDB第一筆資料在0x1EA000, 你知道這位址怎麼得到的嗎? 我是建議 你先一步一步慢慢算, 而不是直接去搜尋某FDB特定字串, 然後號稱知道是從這開始. 其實FAT32很簡單, 從LBA 0開始, 就只是MBR, boot sector, FAT1, FAT2再加一些保留 區, 這樣你自然可以算出cluster 2的位置, 在FAT32中, root directory是放在user data 區域, 所以用FAT32 格式化後, root driectory通常在cluster 2, 但不是絕對, 一切仍以boot sector上的資訊為主. 你在FDB已經知道這file的起始cluster為3, 你就可以到FAT查詢, 就用你的資料為例 F8 FF FF 0F FF FF FF FF FF FF FF 0F FF FF FF 0F ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^ 保留 保留 cluster 2 cluster 3 (root directory) (your file) 從上面就可以知道cluster 3的欄位是 0x0FFFFFFF, 所以這是最後一個相關cluster, 你從FDB得知這檔案是3 bytes, 因此你在檔案總管按右鍵內容應該可以知道這檔案 大小是3 bytes, 磁碟大小是4096 bytes. 另外你也知道cluster 3是從0x1EB000開始, 所以你只要讀0x1EB000即可, 而不是 你講的0x1EB000 - 0x1EB002, 為什麼? 你一開始不就已經從boot sector知道 1 sector是512 bytes, 如果你只需要3 bytes, 那為什麼還要讀 3 sectors? 以上我講的都是以FAT32為主, FAT12/16又有些許不同, 我最後還是要強烈建議如果 真要學FAT, 你先去看懂那份文件, 如果看不懂英文, 那施威銘以前有本"MS-DOS 5.0 技術手冊(2)徹底研究", 當中也有寫到FAT12/16的東西, 各大圖書館或許會有. 不過如果只是要交作業, 那上面那段就當我沒講, 這些應該夠你用. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.167.200.25 ※ 編輯: cyyang 來自: 218.167.200.25 (05/05 15:49) ※ 編輯: cyyang 來自: 218.167.200.25 (05/05 16:06)
pppig327:LBA0 應該指的是 boot 區吧,不包含 MBR 05/08 20:50