讀取FAT16文件專業(yè)知識講座_第1頁
讀取FAT16文件專業(yè)知識講座_第2頁
讀取FAT16文件專業(yè)知識講座_第3頁
讀取FAT16文件專業(yè)知識講座_第4頁
讀取FAT16文件專業(yè)知識講座_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

讀?。疲粒裕保段墨I(xiàn)下列內(nèi)容均參照自baidu文庫中"SD卡FAT16文獻(xiàn)系統(tǒng)學(xué)習(xí)筆記"只是我加入了很多圖片以幫助理解,希望對學(xué)習(xí)FAT16系統(tǒng)中你有所幫助!

1/12讀取文獻(xiàn)流程:

1.讀物理扇區(qū)0,得到引導(dǎo)扇區(qū)(邏輯扇區(qū)0)偏移地址。

2.讀引導(dǎo)扇區(qū)內(nèi)容,得到文獻(xiàn)系統(tǒng)基本配備信息。

3.根據(jù)文獻(xiàn)系統(tǒng)基本配備信息計算FAT,F(xiàn)DT,及數(shù)據(jù)簇起始地址。

4.根據(jù)要讀文獻(xiàn)名搜索FDT(根目錄),找到要讀文獻(xiàn)起始數(shù)據(jù)簇號及文獻(xiàn)大小。

5.根據(jù)文獻(xiàn)起始數(shù)據(jù)簇號在FAT表中查找所有該文獻(xiàn)占用數(shù)據(jù)簇號,根據(jù)數(shù)據(jù)簇號查找對應(yīng)數(shù)據(jù)簇。6.查找下一種數(shù)據(jù)簇號讀取對應(yīng)數(shù)據(jù)簇,直到讀出最后一種數(shù)據(jù)簇0xFFFF。2/12

我這里就有一張SD卡(容量為1G),插上電腦后格式化為FAT格式,然后再往里面放某些文獻(xiàn)!

在電腦上裝上一種叫WinHex軟件,利用其打開磁盤工具,就能夠在物理層面上打開這張SD卡。

讀物理扇區(qū)0(也即MBR),得到引導(dǎo)扇區(qū)(邏輯扇區(qū)0)(DBR)偏移地址。

先讀取SD卡第一種扇區(qū)(512字節(jié)),即扇區(qū)0,該扇區(qū)數(shù)據(jù)如下列圖所示:

3/124/12正常話,該扇區(qū)最后兩個字節(jié)如上圖所示為55AA,假如不是則證明是讀錯了,或者該SD沒有被格式化.該扇區(qū)有兩個主要信息:

一、在0x1ca開始四個字節(jié)03071E00,即0x1E0703=1967875,代表該SD卡有1967875個扇區(qū),而每個扇區(qū)有512字節(jié),因此該SD卡容量為1967875*512/1024/1024=960.8MByte

二、在0x1C6開始四個字節(jié)FD000000,即0xFD=253,它表達(dá)引導(dǎo)扇區(qū)在扇區(qū)253.

到此,這個扇區(qū)0就能夠不用管了。5/12讀取引導(dǎo)扇區(qū)(DBR)下列是扇區(qū)253前64Byte內(nèi)容。由于253*512=0x01FA00,因此能夠懂得下列圖左邊偏移地址為:0x0001FA006/12首先第0x3到0xA內(nèi)容為ASCII碼“MSDOS5.0”,統(tǒng)計了系統(tǒng)版本,這個我們不用管。下列才是我們需要理解叫做BPB內(nèi)容:

第0xb開始兩個字節(jié)0002,即0x2023=512,代表每個扇區(qū)(sector)有512個字節(jié)(byte)

接下來20代表每個簇(cluster)有32個扇區(qū)

接下來0600即0x6代表有6-1個保存扇區(qū),能夠計算第一種FAT表所在扇區(qū)為253+6=259

接下來02代表有兩個FAT表

接下來0002,即0x2023=512,代表FDT(目錄區(qū))有512登記項

第0x16開始兩個字節(jié)f100,即0xf1=241,代表每個FAT表占241個扇區(qū)

第0x36到0x3d代表就是“FAT16”ASCII碼,說明這張SD卡是FAT16格式根據(jù)上述DBR內(nèi)容可得到下列信息:

目前DBR所在扇區(qū):253

每扇區(qū)字節(jié)數(shù):512

每簇扇區(qū)數(shù):32

第一種FAT表所在扇區(qū):DBR所在扇區(qū)+保存扇區(qū)數(shù)=253+6=259

FAT表占用扇區(qū)數(shù):241

根目錄首扇區(qū):第一種FAT表扇區(qū)+FAT扇區(qū)數(shù)*FAT表數(shù)=259+241*2=741;

根目錄項數(shù):512

根目錄占用扇區(qū)數(shù):(根目錄項數(shù)*32)/512=32

第一種數(shù)據(jù)扇區(qū):根目錄扇區(qū)+根目錄所占扇區(qū)數(shù)=741+32=7737/12我sd卡里有一種叫做“123.txt”文檔用記事本打開內(nèi)容是:

目前我們就要找到它,并且看看它在sd卡實際內(nèi)容。

首先:跳到根目錄扇區(qū)741(741*512=0x5CA00),看看它內(nèi)容:8/129/12我們在上面每32個字節(jié)逐次找(直到找到“123.txt”文獻(xiàn)名),一種項要占用32個字節(jié)。前面8個字節(jié)是文獻(xiàn)名“123”背面3個字節(jié)TXT是后綴名(熟悉吧!)

但我們真正用到是這32個字節(jié)最后6個字節(jié)(2E014E550300)

其中“4E550300”表達(dá)文獻(xiàn)大小,占用0x03554E=218446個字節(jié)(也就是218446/1024=213K)占用了(218446/512/32)14個數(shù)據(jù)簇

“2E01”表達(dá)文獻(xiàn)首簇號在“0x012E=302”處

該文獻(xiàn)首個數(shù)據(jù)簇扇區(qū)位置是:第一種數(shù)據(jù)扇區(qū)+(目前簇號-2)*每簇扇區(qū)數(shù)(也就是32)

773+(302-2)*32=10373

10/12來到10373號扇區(qū)(實際地址10373*512=0x510A00),看看它內(nèi)容:

看右邊文獻(xiàn)解釋,是不是跟記事本打開文檔一致!

下面我們再查找下一數(shù)據(jù)簇內(nèi)容,首先要查找下一種數(shù)據(jù)簇號所在扇區(qū):

是這樣計算:FAT首地址+302/256=(259+0x01)=260,我們來到260號扇區(qū),然后計算簇號所在偏移地址

(302mod256)*2=0x2E*2=0x5C

所在簇號就在該扇區(qū)偏移地址0x5C處:

就是實際地址(260*512+0x5C=0x2085C)

11/12由上圖可知,0x2085C,0x2085D(數(shù)據(jù)簇占用兩個字節(jié))內(nèi)容是:2F01,即0x012F就是下一簇簇號。同理計算出再下一簇簇號扇區(qū)是:259+1,偏移地址是0x2F*2=0x5E,即實際地址0x2085E,該處為0x0130同理能夠計算出余下簇號為:0x0131,0x0132,0x0133,0x0134,0x0135,0x0136,0x0137,0x0138,0x0139,0x

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論