FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构

1.前言

本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记。

每个FAT文件系统基本区域由4部分组成,这些基本区域按如下顺序排列:

对于FAT32典型区域分布如下:

本节主要介绍根目录区的内容

2.根目录区

(1)FAT目录是由32Bytes的线性表构成的“文件”

(2)根目录是一个特殊的目录,存在每一个FAT卷中

(3)对于FAT12/FAT16:

  -根目录存储在磁盘固定的地方,紧跟在最后一个FAT表后

  -根目录的扇区数固定,根据BPB_RootEntCnt计算得出

  -FAT12/FAT16根目录的扇区号是相对该FAT卷第一个扇区的偏移量

(4)对于FAT32:

  -根目录由簇链组成,扇区数不固定,跟普通文件相同。

  -根目录的第一个簇号存储在BPB_RootClus中,这个值通常为2,也就是FAT32的根目录通常存放在数据区

  -根目录有一个设置了ATTR_VOLUMN_ID属性位的文件,此文件在整个FAT卷是唯一的

 3.FAT32目录项结构(短文件目录项)

注:[1]如上目录项各字段含义参考Microsoft Extensible Firmware Initiative FAT32 File System Specification中文版p16

    [2]ATTR_VOLUMN_ID,在一个FAT卷中只能有一个文件设置此位,且该文件必须在根目录中,该文件名实际为该卷卷标,DIR_FstClusHI和DIR_FstClusLo

  [3]ATTR_LONG_NAME:表明此文件为另个有长文件名的文件的一部分

  [4]创建目录需完成:

    -“文件”的ATTR_DIRECTORY属性置位,DIR_FileSize置0

    -为目录项(FAT12/FAT16根目录项除外)分配一个簇,DIR_FstClusHI和DIR_FstClusLo设置为该簇簇号,并在FAT表中为该簇设置EOC标志,为该簇每个字节设置为0

  [5]对于根目录,如上已完成目录创建;对于普通目录,需要在分配的簇空间的头两个32bytes创建两个特殊的目录项:"."和".."

原文地址:https://www.cnblogs.com/smartjourneys/p/8430930.html