zoukankan      html  css  js  c++  java
  • FAT32学习笔记(一)

    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的改变而改变

  • 相关阅读:
    JSP标签介绍
    JSP四大作用域属性范围
    JSP九大内置对象及四个作用域
    maven:Fatal error compiling: 无效的目标发行版: 1.8.0_45 -> [Help 1]
    浅谈Session与Cookie的区别与联系
    Servlet入门实践
    安卓常用布局基本属性
    安卓常用布局
    Android开发中Handler的经典总结
    三种方法写监听事件
  • 原文地址:https://www.cnblogs.com/zhiliao112/p/4067860.html
Copyright © 2011-2022 走看看