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创建两个特殊的目录项:"."和".."

  • 相关阅读:
    Cannot run program "/home/mohemi/Program/adt-bundle-linux-x86_64-20130729/sdk//tools/emulator": error=2, 没有那个文件或目录
    在Ubuntu里部署Javaweb环境脑残版
    ios 内存管理 心得
    关于Servlet的PrintWriter 中文乱码问题
    流的对拷
    什么是javaBean
    ios 页面传值4种方式(四) 之通过delegate(代理)
    ios 页面传值4种方式(一) 之全局变量
    Block
    UIView动画学习笔记
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/8430930.html
Copyright © 2011-2022 走看看