RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 
 46  1/4  1  2  3  4  > 


 
主題: [資訊電機] [問題]請問有詳細介紹FAT儲存格式的書籍嗎?   字型大小:||| 
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#1 : 2005-11-30 11:16 PM     只看本作者 引言回覆

請問有詳細介紹FAT儲存格式的書籍嗎?
像硬碟或隨身碟或記憶卡
要如何規化才能讓OS正常讀取之類的!



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#2 : 2005-12-1 01:27 AM     只看本作者 引言回覆

據我所知 FAT12,16 格式是公開的,FAT32,MS則保密,不過原理應該與16差不多。

你是要以下的資料??

BOOT SECTOR 記錄

偏移值 資料大小 說明
00H 3位元組 跳址指令(V5版為EB3C90H)。
3∼0AH 8位元組 系統名稱。
0BH以後為BPB資料:
0BH+00H 2位元組 每磁區之位元組數(內定為0200H)。
0BH+02H 位元組 每磁簇之磁區數。
0BH+03H 2位元組 由磁區0開始的保留磁區數。
0BH+05H 位元組 FAT個數(內定為02)。
0BH+06H 2位元組 根目錄登錄總數。
0BH+08H 2位元組 磁區總數(大於65535則此值為0)。
0BH+0AH 位元組 媒質指示。
0BH+0BH 2位元組 每一FAT所佔之磁區數。
0BH+0DH 2位元組 每磁軌之磁區數。
0BH+0FH 2位元組 磁頭數。
0BH+11H 4位元組 隱藏磁區數(內定為0)。
0BH+15H 4位元組 若8H=0則為磁區總數(內定為0)。
0BH+19H 位元組 實體磁碟機數。
0BH+1AH 位元組 保留。
0BH+1BH 位元組 擴充開機記錄之記名欄。
0BH+1CH 4位元組 由日期時間而得的序列號碼。
0BH+20H 11位元組 版本標記。
0BH+2BH 8位元組 保留(內存FAT型式;為FAT12或FAT16之文字)。

[AGC 在 2005-12-1 01:30 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#3 : 2005-12-1 01:01 PM     只看本作者 引言回覆

請教一下
當硬碟或記憶卡格式化成FAT16或FAT32之後
要如何知道BOOT區和ROOT區和資料區是在哪個位址呢?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#4 : 2005-12-1 02:15 PM     只看本作者 引言回覆

我猜記憶卡應該沒有分割表吧(和FD同),所以第一個磁區就是BOOT區。
而HD就比較麻煩,因有分割表,所以先要找出每個分割(邏輯磁碟)開始處,才可找到每一個邏輯磁碟的BOOT區。
而ROOT開始處為:
BOOT區+2份FAT表所佔磁區,即可求得,一般一磁區為0.5KB(512BYTES),而BOOT區的下一磁區就是FAT表區。
由上表中可取得每份FAT所佔磁區數(0X0B+0XB處),再乘以(0X0B+0X05)內的值=總FAT所佔空間,這個區域稱磁簇(或叢集)0。
一般FAT16,是用2BYTES記錄磁簇值,所以最大為65535*2=128KB=256個磁區,2份表就512個磁區+1(BOOT區)=513,所以第514起就是ROOT區了,而ROOT佔多少空間,可由"根目錄登錄總數"求出,每一檔名記錄佔32BYTES。
例如 HD 的ROOT,最多為512個,則為 (512*32)/512=32個磁區,這個區域通常稱為磁簇1
以上是SFN方式,LFN比較麻煩了,我記得N年前有一本"HD實戰手冊"(?,要查一下書名),上面有關LFN的說明。



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#5 : 2005-12-1 05:57 PM     只看本作者 引言回覆

書名:
PCDIY98硬碟玩家實戰(旗標,F641),第7章。
有一站,一定喜歡的
http://www.ntfs.com/
之前忘了貼了。

[AGC 在 2005-12-1 08:17 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#6 : 2005-12-5 04:02 PM     只看本作者 引言回覆

請教一下
MBR的位置都是從sector 0開始嗎?
MBR的大小有一定嗎?
分割表 partition table 的位置又在哪呢?
不同硬碟位置也會不同嗎?
有partition table的格式資料嗎?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#7 : 2005-12-5 06:08 PM     只看本作者 引言回覆

抓這東東回去,見 P.80~83
而分割表的位置及如何看,N年前我也曾經貼過。
如果沒特殊需求,在PC上每一磁區都是512BYTES,RAMDISK可任意指定大小(內定,記得是128BYTES)

[AGC 在 2005-12-5 06:13 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#8 : 2005-12-5 11:02 PM     只看本作者 引言回覆

再貼一次好了。
有關FAT讀檔及處理方式(磁簇值-->磁區值)等,可見我N年前寫的FSRC程式(可在這裡取得)
不過是ASM寫的,不過我沒寫太多的註解,因為我另外寫成筆記的,該程式只是讀出FAT功能,沒有寫入FAT資料。
我忘了當初我取得BOOT內的各項資料是透過DOS CALL還是 INT25H 讀 SEC.0 ,這要查查。

寄件者:Asc Cpu (newsgate@teatime.lifenet.com.tw)
主旨:DOS磁區和物理磁區的互換問題(解答版)
新聞群組:tw.bbs.comp.language
日期:1998/11/10


DOS絕對磁區換算成物理磁軌、磁面、磁區之算法
───────────────────────

首先介紹本人HD之分割法:
HD1 = C: to P: ( 2.1GB )
HD2 = Q:  ( 120MB )
第一台HD分成C:~P:磁碟,第二台沒分割。

表1~3是HD1的各個磁碟的分割表內量;要算物理磁軌、磁面、磁區所需要
知的有HD的最大每一磁面上的磁區總數值,由表1知為63;每一磁軌的磁面數
(就是磁頭數),由表1知為64,而總磁軌數要不要,則示程式寫作時決定;
再來就是要知保留磁區的值(由 RELATIVE SEC. 欄得知)。

接下來談公式:

A式:
物理磁區值=線性磁區值(註) MOD 每一磁面的磁區總數值
B式:
物理磁面值= INT(線性磁區值/每一磁面的磁區總數值) MOD 每一磁軌的磁面總數值
C式:
物理磁軌值= INT(線性磁區值/(每一磁面的磁區總數值*每一磁軌的磁面總數值))

註:因為要區分物理磁區而取名的,其如何求出的,後述。

OK:現在我要求出在C:之絕對磁區3988,位於HD的何處,則步驟如下:

1、絕對磁區+1+C:的保留磁區值=線性磁區值,為:

      3988+1+63=4052

2、把1步求出的值代入上面的A、B、C三式中得:

    A=4052/63=64餘20,所以 A=20
    B=64/64=1餘0,所以 B=0
    C=1

3、所以位在磁軌1、磁面0、磁區20的地方。(CYLI.=1,SIDE=0,SEC.=20)


表1:
DISK DRIVER= C: & D:+
---------------------------------------------------------------------------
|      |    | Starting Location  |  Ending Location   |Relative |Number of |
|System|Boot|Side Cylinder Sector|Side Cylinder Sector|Sectors  | Sectors  |C:
|BIGDOS| Yes|  1       0      1  | 63      60     63  |       63|    245889|D:+
|EXTEND| No |  0      61      1  | 63    1021     63  |   245952|   3874752|
---------------------------------------------------------------------------


表2:
DISK DRIVER= D: & E:+
---------------------------------------------------------------------------
|      |    | Starting Location  |  Ending Location   |Relative |Number of |
|System|Boot|Side Cylinder Sector|Side Cylinder Sector|Sectors  | Sectors  |D:
|BIGDOS| No |  1      61      1  | 63     121     63  |       63|    245889|E:+
|EXTEND| No |  0     122      1  | 63     182     63  |   245952|    245952|
---------------------------------------------------------------------------


表3:
DISK DRIVER= E: & F:+
---------------------------------------------------------------------------
|      |    | Starting Location  |  Ending Location   |Relative |Number of |
|System|Boot|Side Cylinder Sector|Side Cylinder Sector|Sectors  | Sectors  |E:
|BIGDOS| No |  1     122      1  | 63     182     63  |       63|    245889|F:+
|EXTEND| No |  0     183      1  | 63     243     63  |   491904|    245952|
---------------------------------------------------------------------------


好,現在要求出E:中絕對磁區77988在何處:

1、由表2的E:+處得之,之前的保留區是245952,再看表3中的E:分割
表內的保留區是63,所以線性磁區值為:

       77988+1+63+245952=324004

2、代入ABC三式得:

      A=324004/63=5142餘58,所以 A=58
      B=5142/64=80餘22,所以 B=22
      C=80

則位於 CYLI.=80,SIDE=22,SEC.=58 處。

好了,說明完了,知到算法之後,你可以把整個邏輯磁碟機 BACK UP 都行了

OK,有問題或有錯的地方可以提出來........

.. THE WAY YOU DO THE THINGS YOU DO/MY GIRL .. (DARYL HALL & JOHN OATES)
--- News Gateway 0.08+
* Origin: TeaTime BBS 886-2-2245-3105 News <=> BBS Gateway (6:720/345.0)
[AGC 在 2005-12-5 11:07 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#9 : 2005-12-6 08:28 AM     只看本作者 引言回覆

有程式是可以在XP下就直接看硬碟內的磁區分佈內容嗎?

還有用LBA來抓資料的話
一次都抓512byte
那如果512byte只有用到一點
那剩下的空間不都浪費掉了嗎?

[saltire 在 2005-12-6 08:47 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#10 : 2005-12-6 11:04 AM     只看本作者 引言回覆

其實不管NTFS,FAT多少的,用NORTON的DISKEDIT(DOS版可),都可看見HD內每磁區的內容(我有試過),這是用INT13H直接取物理磁區出來的,所以HD一定必為BIOS抓到的,像BIOS抓不到,但,要進2000,XP才可用的,則不行(或許在200,XP開DOS BOX,執行DISKEDIT看看,可能可行 )。
第2個問題...是的,但還有磁簇這東東(第2磁簇起,每磁簇的大小見"0BH+02H 位元組 每磁簇之磁區數"該項)
MS的磁碟運作是以"磁簇"為單位存取,所以,以1磁簇=4KB而言,是8磁區,就算你只存1BYTE下去,表面上檔名記錄表內的檔大小是1,實際上,它被佔走了4KB的空間去了,所以我在FSRC程式中也有顯示該檔實際佔用空間值。

[AGC 在 2005-12-6 11:15 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#11 : 2005-12-6 04:51 PM     只看本作者 引言回覆

再問一下
我有一塊32MB的CF卡
想格式化成FAT32
我用電腦管理的磁碟管理來格式化
跑到100%時出現"磁碟區容量太小 不適用於所選取的檔案系統"
然後CF卡依舊是FAT格式
不知道是容量的關係嗎?
還是說一定要超過2G的記憶卡才可以格式化成FAT32?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#12 : 2005-12-6 06:41 PM     只看本作者 引言回覆

沒玩過FAT32,不過應該是太小了不合乎效能,32MB好像是FAT12的上限


[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#13 : 2005-12-7 05:33 PM     只看本作者 引言回覆

我已經知道要超過32MB才可以格式化成FAT32了

現在有了新的問題是
如果我想設計一個嵌入式系統的格式化功能
可以格式化硬碟或記憶卡
有讀寫SECTOR的函數
沒有FORMAT這種函數
但是我抓取資料都是從MBR和BOOT
一旦擦除掉了
不就沒辦法知道儲存體的基本資料(磁碟容量)了嗎?
還是說MBR和BOOT是可以自己建表規化的呢?



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
AGC
論壇音樂賢者
等級: 15等級: 15等級: 15等級: 15等級: 15
沒戲唱了

今日心情

 . 積分: 1233
 . 精華: 3
 . 文章: 2132
 . 收花: 9655 支
 . 送花: 459 支
 . 比例: 0.05
 . 在線: 1805 小時
 . 瀏覽: 3480 頁
 . 註冊: 7950
 . 失蹤: 0
 . U.S.S. AGC
#14 : 2005-12-7 08:08 PM     只看本作者 引言回覆

這我就沒研究了,若找的到以前DOS下的FDISK及FORMAT的原始程式來看就有幫助了

http://www.23cc.com/free-fdisk/
有 FDISK 及 FORMAT 含原碼,剛找的。

[AGC 在 2005-12-7 08:14 PM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記
saltire
版主
等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30等級: 30
御姊萌妹美少女推倒委員長

今日心情

 . 積分: 728
 . 精華: 3
 . 文章: 4461
 . 收花: 4240 支
 . 送花: 28757 支
 . 比例: 6.78
 . 在線: 2170 小時
 . 瀏覽: 34517 頁
 . 註冊: 7971
 . 失蹤: 151
 . 宇宙殖民地
#15 : 2005-12-8 10:40 AM     只看本作者 引言回覆

慘了
我把記憶卡的sector 0 清除掉了
然後在用讀卡機格式化
接著就發生一件事
原本boot sector應該在32才對
現在跑到sector 0了
而原本sector的MBR和PartitionTable都不見了
我試過PARTITION MAGIC了
只讀的到硬碟
讀不到讀卡機的CF卡

這下我該如何是好呢?

[saltire 在 2005-12-8 11:46 AM 作了最後編輯]



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  新增/修改 爬文標記

 46  1/4  1  2  3  4  > 
   



 



所在時區為 GMT+8, 現在時間是 2024-3-29 03:17 PM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.027284 second(s), 6 queries , Qzip disabled