zoukankan      html  css  js  c++  java
  • 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创建两个特殊的目录项:"."和".."

  • 相关阅读:
    sql FLOAT字段使用like查询
    关于sql--时间范围查询重叠
    关于java时间类型比较
    前端-搜索无结果时,怎么把“暂无数据“显示出来?
    v-for动态赋值给不同的下拉框input
    Java的优先队列PriorityQueue详解
    软件体系架构阅读笔记八
    字符数组和字符串之间的转换
    Java快速输入输出
    软件体系架构阅读笔记七
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/8430930.html
Copyright © 2011-2022 走看看