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实现.它的设计目标是可以运行在廉价的设备上,运行在大多数的系统平台上,高可用,高容错,易于扩展. 适合场景 存 ...
随机推荐
- HDU5542 BIT优化dp
http://acm.hdu.edu.cn/showproblem.php?pid=5542 题意:求严格递增的长度为M的序列的组数. 当dp的优化方案不那么容易一眼看出来的时候,我们可以考虑先写一个 ...
- Java NIO系列教程(七) selector原理 Epoll版的Selector
目录: Reactor(反应堆)和Proactor(前摄器) <I/O模型之三:两种高性能 I/O 设计模式 Reactor 和 Proactor> <[转]第8章 前摄器(Proa ...
- 11.享元模式(Flyweight Pattern)
面向对象的代价 面向对象很好地解决了系统抽象性的问题,同时在大多数情况下,也不会损及系统的性能.但是,在某些特殊的应用中下,由于对象的数量太大,采用面向对象会给系统带来难以承受的内存开销.比如: ...
- linux查看IP
1:输入 ifconfig,出现如下信息,找到eno16777736(网卡ip信息的配置文件名) 2:输入 cd /etc/sysconfig/network-scripts 找到网卡ip信息的配置文 ...
- Hadoop记录-hdfs转载
Hadoop 存档 每个文件均按块存储,每个块的元数据存储在namenode的内存中,因此hadoop存储小文件会非常低效.因为大量的小文件会耗尽namenode中的大部分内存.但注意,存储小文件所需 ...
- SQL Server 备份到网络盘网络映射盘
declare @DBName nvarchar(max) declare @BakName nvarchar(max) --在这里修改数据库名称 select @DBName='[LFBMP.PO] ...
- 详解Linux内核红黑树算法的实现
转自:https://blog.csdn.net/npy_lp/article/details/7420689 内核源码:linux-2.6.38.8.tar.bz2 关于二叉查找树的概念请参考博文& ...
- Linux 内核里的数据结构:位图(bitmap)
注: 本文由 LCTT 原创翻译,Linux中国 荣誉推出 Linux 内核中的位数组和位操作 除了不同的基于链式和树的数据结构以外,Linux 内核也为位数组(或称为位图(bitmap))提供了 A ...
- linux部署Web项目总结
本文用的是CentOS7系统,不是虚拟机. 1.什么是Xshell? xshell连接上linux之后,就等同于linux本身的终端命令窗口. xshell不是必需品,但是它能更好的辅助我们学习lin ...
- 不存数据库的token验证
不需要数据库存,纯粹通过计算来判断是否相等 {name:chuck,id:1}|自己加密方式加密后的内容 截取加密内容,反解,判断反解内容与{name:chuck,id:1}是否相同,只会耗费计算资源 ...