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创建两个特殊的目录项:"."和".."
FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构的更多相关文章
- FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- amazeui学习笔记二(进阶开发1)--项目结构structure
amazeui学习笔记二(进阶开发1)--项目结构structure 一.总结 1.项目结构:是说的amazeui在github上面的项目结构,二次开发amazeui用 二.项目结构structure ...
- [原创]java WEB学习笔记02:javaWeb开发的目录结构
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- linux学习笔记之文件类型,及目录介绍
引用A:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/20/3033131.html 引用B:http://www.cnblogs.c ...
- linux命令学习笔记(23):Linux 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件 目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下 ...
- HDFS v1.0学习笔记
hdfs是一个用于存储大文件的分布式文件系统,是apache下的一个开源项目,使用java实现.它的设计目标是可以运行在廉价的设备上,运行在大多数的系统平台上,高可用,高容错,易于扩展. 适合场景 存 ...
随机推荐
- 面向对象【day08】:类的起源与metaclass(二)
本节内容 1.概述 2.类的起源 3.__new__方法 4.__metaclass__方法 一.概述 前面我们学习了大篇幅的关于类,通过类创建对象,那我们想知道这个类到底是怎么产生的呢?它的一切来源 ...
- Docker 容器管理
单一容器管理 容器的标识符 每个容器被创建后都会分配一个CONTAINER_ID作为容器的唯一标识符,后续的启动.停止等操作都通过CONTAINER_ID来完成的. CONTAINER_ID很难记忆, ...
- Linux记录-文件格式
yum -y install dos2unix dos2unix filename
- layui(五)——form组件常见用法总结
form 是我们非常看重的一块.layui中的form实现全自动的初始渲染,和基于事件驱动的接口书写方式.我整理了layui中form的配置.下边直接给一个栗子,后台采用.net MVC,除了razo ...
- shop++改造之Filter类
基于shop++源码进行商城改造.本来想大展手脚,结果一入手.发觉瞬间淹没了我的才华,sql语句也得贼溜没啥用. 不得不说这个商城源码价值很高,封装的很精屁. 下面是我第一天入手的坑. 数据库建好了表 ...
- ACM-ICPC 2018 徐州赛区网络预赛 I Characters with Hash(模拟)
https://nanti.jisuanke.com/t/31461 题意 一个hash规则,每个字母映射成一个两位数,求给的字符串最后的编码位数,要求去除最终结果的前导零 分析 按题意模拟就是了 # ...
- react暴露webpack配置文件
在react中安装create-react-app脚手架新建项目,但是新建的项目中没有配置文件. webpack的配置文件webpack.base.conf.js隐藏在了node_modules文件夹 ...
- maven构建项目时硬编码中文乱码问题解决
场景:1. 项目采用maven作为构建工具.2. 前端页面为jsp,由前端团队独立完成,添加编码配置:<%@ page contentType="text/html;charset=u ...
- JDK源码之ArrayList
序言 ArrayList底层通过数组实现. ArrayList即动态数组,实现了动态的添加和减少元素 需要注意的是,容量拓展,是创建一个新的数组,然后将旧数组上的数组copy到新数组,这是一个很大的消 ...
- spring注解第01课 @Configuration、@Bean
一.原始的 xml配置方式 1.Spring pom 依赖 <dependency> <groupId>org.springframework</groupId> ...