FAT学习笔记(四)——Dir Entry

1,短目录和长目录:

短目录和长目录都是放在Data region里的,一个directory entry占用32byte,具体参考下表:

Short directory entry


Name


Offset (byte)


Size (bytes)


Description


DIR_Name


0


11


Short name.


DIR_Attr


11


1


File attributes:

ATTR_READ_ONLY                0x01

ATTR_HIDDEN                       0x02

ATTR_SYSTEM                       0x04

ATTR_VOLUME_ID               0x08

ATTR_DIRECTORY                 0x10

ATTR_ARCHIVE                     0x20

ATTR_LONG_NAME              ATTR_READ_ONLY | ATTR_HIDDEN | ATTR_SYSTEM | ATTR_VOLUME_ID

The upper two bits of the attribute byte are reserved and should always be set to 0 when a file is created and never modified or looked at after that.

DIR_NTRes 12 1 Reserved for use by Windows NT.
DIR_CrtTimeTenth 13 1 Millisecond stamp at file creation time.
DIR_CrtTime 14 2 Time file was created.
DIR_CrtDate 16 2 Date file was created.
DIR_LstAccDate 18 2 Last access date.
DIR_FstClusHI 20 2 High word of this entry’s first cluster number (always 0 for a FAT12 or FAT16 volume).
DIR_WrtTime 22 2 Time of last write.
DIR_WrtDate 24 2 Date of last write.
DIR_FstClusLO 26 2 Low word of this entry’s first cluster number.
DIR_FileSize 28 4
32-bit DWORD holding this file’s size in bytes.

所以FAT32支持文件的最大大小为4G

DIR_Name不能包含以下字符:

1, 任何小于0X20值的字符,除了0x05(0X05代表的含义是该目录entry可以被重新使用,删除一个文件的时候用0x05来覆盖DIR_Name[0,如果DIR_Name[0]的值为0,表示该entry可以被使用~之前没有被使用过)

2,0x22, 0x2A, 0x2B, 0x2C, 0x2E, 0x2F, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, 0x5B, 0x5C, 0x5D, and 0x7C.

Shaort name举例如下:

“foo.bar”            -> “FOO     BAR”

“FOO.BAR”            -> “FOO     BAR”

“Foo.Bar”            -> “FOO     BAR”

“foo”                -> “FOO        “

“foo.”               -> “FOO        “

“PICKLE.A”           -> “PICKLE  A  “

“prettybg.big”       -> “PRETTYBGBIG”

“.big”               -> illegal, DIR_Name[0] cannot be 0x20

Data format:

a date relative to the MS-DOS epoch of 01/01/1980


Bits


Description


15-9


Year (0 = 1980, 127 = 2107)


8-5


Month (1 = January, 12 = December)


4-0


Day (1 - 31)

Time format:

The valid time range is from Midnight 00:00:00 to 23:59:58


Bits


Description


15-11


Hours (0-23)


10-5


Minutes (0-59)


4-0


Seconds/2 (0-29)

long directory entry


Name


Offset

(byte)


Size

(bytes)


Description


LDIR_Ord


0


1


The order of this entry in the sequence of long dir entries associated with the short dir entry at the end of the long dir set.

If masked with 0x40 (LAST_LONG_ENTRY), this indicates the entry is the last long dir entry in a set of long dir entries. All valid sets of long dir entries must begin with an entry having this mask.


LDIR_Name1


1


10


Characters 1-5 of the long-name sub-component in this dir entry.


LDIR_Attr


11


1


Attributes - must be ATTR_LONG_NAME


LDIR_Type


12


1


If zero, indicates a directory entry that is a sub-component of a long name.  NOTE: Other values reserved for future extensions.

Non-zero implies other dirent types.


LDIR_Chksum


13


1


Checksum of name in the short dir entry at the end of the long dir set.


LDIR_Name2


14


12


Characters 6-11 of the long-name sub-component in this dir entry.


LDIR_FstClusLO


26


2


Must be ZERO. This is an artifact of the FAT "first cluster" and must be zero for compatibility with existing disk utilities.  It‘s meaningless in the context of a long dir entry.


LDIR_Name3


28


4


Characters 12-13 of the long-name sub-component in this dir entry.

Example:

当一个文件名字是"The quick brown.fox". 以下的表格说明了它是如何存放在directory entry里的。

FAT32对文件名以及文件路径的限制:

1, 短目录名可以包含任何字母数字以及下面的字符:

$   %   ‘   -   _   @   ~    `   !   (    )   {   }  ^  #  &

2, 长目录名不能包含如下字符

+   ,   ;   =   [   ]

3, 短目录名路径最大长度是8+3,端目录完整路径长度最大为80(包含最后的结束NUL字符)

4, 长目录完整路径最大为255(不包含最后的NUL字符)

5, 长目录entry是通过UNICODE来放具体名字的字符的,2个byte对应一个字符,区分大小写。

6, 短目录entry是不区分大小写的。

时间: 2024-10-19 10:08:37

FAT学习笔记(四)——Dir Entry的相关文章

CCNA学习笔记四——Telnet CDP

CDP协议:Cisco发现协议 show cdp show cpd neighbors:查看当前设备连接了哪些Cisco设备 cdp timer:修改发送间隔时间 cdp holdtime:修改保留时间 cdp advertise-2:修改版本号 debug cdp packets show cdp traffic:查看有关cdp包的统计信息 show cdp interface:查看端口cdp信息 show cdp entry:查看所有邻居的详细信息 cdp run:全局开启所有接口cdp协议

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能

Caliburn.Micro学习笔记(四)----IHandle<T>实现多语言功能 说一下IHandle<T>实现多语言功能 因为Caliburn.Micro是基于MvvM的UI与codebehind分离, binding可以是双向的所以我们想动态的实现多语言切换很是方便今天我做一个小demo给大家提供一个思路 先看一下效果 点击英文  变成英文状态点chinese就会变成中文                          源码的下载地址在文章的最下边 多语言用的是资源文件建

代码管理工具 --- git的学习笔记四《重新整理git(1)》

1.创建版本库 mkdir  创建目录 cd  地址,到该地址下 pwd 显示当前目录 1.创建目录 $ mkdir startGit $ cd startGit $ pwd 显示当前目录 或者cd到桌面,然后再创建目录 2.初始化版本库 $ git init 初始化仓库 提示信息:Initialized empty Git repository in /Users/xingzai/Desktop/startGit/.git/ 建立一个空的git仓库在/Users/xingzai/Desktop

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

小猪的数据结构学习笔记(四)

小猪的数据结构学习笔记(四) 线性表之静态链表 --转载请注明出处:coder-pig 本章引言: 在二,三中中我们分别学习了顺序表中的线性表与单链表,线性表有点类似于 我们前面所学的数组,而单链表使用的最多的是指针,这里问个简单的问题, 如果是在以前没有指针的话,前辈先人们怎么实现单链表呢?大家思考下! 没有指针,那么用什么来代替呢?前辈先人们非常机智,想出了使用下标+游标的方式 来实现单链表的效果!也就是今天要讲的--静态链表! 当然你也可以直接跳过本章,因为有了单链表就没有必要用静态链表了

Swift学习笔记四:数组和字典

最近一个月都在专心做unity3d的斗地主游戏,从早到晚,最后总算是搞出来了,其中的心酸只有自己知道.最近才有功夫闲下来,还是学习学习之前的老本行--asp.net,现在用.net做项目流行MVC,而不是之前的三层,既然技术在更新,只能不断学习,以适应新的技术潮流! 创建MVC工程 1.打开Visual studio2012,新建MVC4工程 2.选择工程属性,创建MVC工程 3.生成工程的目录 App_Start:启动文件的配置信息,包括很重要的RouteConfig路由注册信息 Conten

NLTK学习笔记(四):自然语言处理的一些算法研究

自然语言处理中算法设计有两大部分:分而治之 和 转化 思想.一个是将大问题简化为小问题,另一个是将问题抽象化,向向已知转化.前者的例子:归并排序:后者的例子:判断相邻元素是否相同(与排序). 这次总结的自然语言中常用的一些基本算法,算是入个门了. 递归 使用递归速度上会受影响,但是便于理解算法深层嵌套对象.而一些函数式编程语言会将尾递归优化为迭代. 如果要计算n个词有多少种组合方式?按照阶乘定义:n! = n*(n-1)*...*1 def func(wordlist): length = le

Android学习笔记四:添加Source

问题描述 Source not foundThe JAR file D:\.....\sdk\platforms\android-20\android.jar has no source attachment. 问题原因及解决办法 1. 使用SDK Manager下载最新版本的Sources for Android SDK 一般文件下载目录默认在SDK下的sources文件中即 \adt-bundle-windows-x86_64-20130522\sdk\sources\android-20

【Unity 3D】学习笔记四十二:粒子特效

粒子特效 粒子特效的原理是将若干粒子无规则的组合在一起,来模拟火焰,爆炸,水滴,雾气等效果.要使用粒子特效首先要创建,在hierarchy视图中点击create--particle system即可 粒子发射器 粒子发射器是用于设定粒子的发射属性,比如说粒子的大小,数量和速度等.在创建完粒子对象后,在右侧inspector视图中便可以看到所有的粒子属性: emit:是否是使用粒子发射器. min size:粒子最小尺寸. max size:粒子最大尺寸. min energy:粒子的最小生命周期

WEB前端学习笔记 四

接上一篇,web学习笔记 四,在此感谢您对此篇笔记的认可,但转发时请注明文章出自网知博学. 2.0  html的语法格式 html的标签要写在尖括号中 :<> 在在英文输入法状态下,按住shift键然后再按它左侧的尖括号就可了, 先学习一个简单的h1标签,是个标题标签,在html中这样写: <h1>我在h1标签中,我就是标题</h1> 那么h1标签中所包裹的文字,就标记成标题了.通过浏览器的解析后在页面上显示出来的效果就是字体加粗,加黑,和word中的标题性质一样! 大