码迷,mamicode.com
首页 > 其他好文 > 详细

FAT32学习笔记(一)

时间:2014-11-01 23:05:21      阅读:851      评论:0      收藏:0      [点我收藏+]

标签:des   style   http   io   ar   使用   for   sp   文件   

1,基本概念

fat32 spec
FAT的全称是File Allocation Table,FAT是在1980s年代初由微软开发的,主要有FAT12,FAT16,FAT32三种,分为这三种的主要原因是FAT12的FAT entry有12bits,FAT16的FAT entry有16bits,FAT32的FAT entry有32bit

 

2,FAT format

一个扇区(sector)大小为512Byte,一个cluster的大小通常为2的整数次幂的cluster的个数,最大32KB,一个文件至少占用一个cluster,通常为整数个cluster,这整数个cluster互为链表关系

FAT32 format(Data是从cluster计算起的,不存在cluster0和cluster1的。)

 

MBR

Boot

FSInfo

Rsv

FAT1

FAT2

Data

 

 

FAT16 format(Data从Cluster2开始)

 

MBR

Boot

Rsv

FAT1

FAT2

RotDir

Data

 

 

Boot指的是Boot Sector,Boot Sector占用第一个逻辑扇区,大小为512Byte.Boot Sector的详细解释可以参考FAT32 spec,其中主要有用成员如下:

 

Name

Offset(byte)

Size(byte)

Description

BPB_BytsPerSec

11

2

描述每个sector多少byte,通常为512(向前兼容),也可以取值为1024,2048,4096,

注:如果设备有物理sector为N且N大于512,那么取值为N但是不能超过4096

BPB_SecPerClus

13

1

表明每个cluster有多少个sector,通常为2的整数次幂,但是一个cluster通常不会超过32K

BPB_RsvdSecCnt

14

2

在Reserved region里保留sector的个数,对于FAT12 FAT16此值为1,对于FAT32此值为32

BPB_NumFATs

16

1

FAT data structure的个数,通常为2,FAT1和FAT2,安全性互为备份的关系

BPB_RootEntCnt

17

2

对于FAT32此值为0,对于FAT12和FAT16,此值含义是32byte根目录入口的个数

BPB_TotSec16

19

2

对于FAT12和FAT16,此值表示的是整个fatimg里sector的个数,对于FAT32此值为0,整个fatimg里sector的个数在offset 32长度为4的范围里表示。

BPB_Media

21

1

0Xf8表示的是non-removable media,0XF0表示的是removable media,该值要和FAT[0]的低位相同

BPB_FATSz16

22

2

对于FAT12和FAT16,表明的是一个FAT占用sector的大小,对于FAT32,此值为0

BPB_HiddSec

28

4

对于不带分区的设备,此值为0,对于其他的,此值的含义是在partition前的隐藏sector的个数

BPB_TotSec32

32

4

对于FAT32表明的是整个设备的sector的个数。不包含之前的MBR

 

 

 

以下是针对FAT32的。

Name

Offset(byte)

Size(byte)

Description

BPB_FATSz32

36

4

一个FAT表占用的sector的个数,FAT32有两个FAT表,互为备份关系,FAT12和FAT16该项内容为空。

BPB_ExtFlags

40

2

Bit7为0表示的是在运行的时候FAT表1和FAT表2是互为镜像的,bit7为1表示在运行的时候只有一个FAT表是活动的,FAT12和FAT16该项内容为空。

BPB_RootClus

44

4

根目录所在cluster的cluster的序号,通常为2,即Data region的第二个cluster是根目录,这样从cluster2就可以方便找到根目录(个人理解cluster是从Data region开始算起)

BPB_FSInfo

48

2

表明了fsinfo占用的sector的个数

BPB_BkBootSec

50

2

Reserved area里对boot sector备份的个数。

BPB_Reserved

52

12

保留将来扩展使用

BS_DrvNum

64

1

 

BS_FilSysType

82

8

FAT32通常设置为字符串“FAT32”

 

510

2

固定值 0X55 AA,这个固定值一定偏移是510位置,不随sector的改变而改变

 

FAT32学习笔记(一)

标签:des   style   http   io   ar   使用   for   sp   文件   

原文地址:http://www.cnblogs.com/zhiliao112/p/4067860.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!