※ 引述《cyyang (CCC)》之銘言:
: ※ 引述《CuckooBoy (阿書)》之銘言:
: : 這問題是這樣的...
: : 一個儲存元件 如:硬碟,CF卡..等 , 就FAT32而言
: : File Description Block中的 磁叢指位器 是一個告訴使用者檔案要到哪一個位址找
: : 我上網找了很多資料,還是不明白它在寫什麼?
: : 不知道有沒有人懂這方面的...
: : 可以針對 磁叢指位器 舉一個例子...說明一下嗎?
: : 感謝感謝
: 雖然覺得這好像是學校作業題目, 但還是簡單講一下,
: FAT(12/16/32)是個單向 link list, 你在FDB 看到cluster number後, 就可以到FAT
: 找到這個link list的起始位置, 你從FAT 對應的欄位就可以知道下一個cluster在哪,
: 在FAT32中, 一直讀到發現欄位變成0x0FFFFFFF就知道這是最後一個cluster.
: 在你知道cluster的同時, 自然也可以算出這個檔案一開始的Logical block
: address (LBA), 存取該LBA 即可得到檔案內容. 至於要讀多少才算完成,
: 請參閱 FDB 的File Size 欄位.
: 另外至於1 cluster有幾個sector, 1 sector有幾個byte, 你都可以在boot sector
: 中得到相關資訊.
: 簡單講一講, 不懂就去參考這份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 ........................................
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.6.78