FAT文件系统总结(三)

 

八、 长文件名
 
长文件名是在原有的 FAT 系统上引入的,在只支持短文件名的系统上,长文件名就像是不存在一样。为了达到这个目标,长文件名通过在原有的目录项中引入新的属性字(Attribute)得以实现。
 
ATTR_LONG_NAME = ATTR_READ_ONLY |
ATTR_HIDDEN |
 
ATTR_SYSTEM |
 
ATTR_VOLUME_ID
 
判断一个目录项是否为长文件名,要通过下面 MASK 实现:
 
ATTR_LONG_NAME_MASK = ATTR_READ_ONLY |
 
ATTR_HIDDEN |
 
ATTR_SYSTEM |
 
ATTR_VOLUME_ID |
 
ATTR_DIRECTORY |
 
ATTR_ARCHIVE
 
 
长文件名目录项数据结构如下: 

Name
Offset
Size
Description
 
(byte)
(bytes)
 
LDIR_Ord
0x00
1
该项在这组长文件名中的序号。
 
 
 
如果第 6 bit 为 1(Mask with 0x40),说明这
 
 
 
是该组长文件名的最后一项。每一组有效的长文件
 
 
 
名都必须有这个标志位。
 
 
 
 
LDIR_Name1
0x01
10
长文件名的第 1-5 个字符
LDIR_Attr
0x0B
1
属性字 – 必须为 0x0F(ATTR_LONG_NAME)
LDIR_Type
0x0C
1
如果是 0,则表示这个目录项是长文件名的一部分。
 
 
 
非 0 数值为保留设置。
LDIR_Chksum
0x0D
1
对应的短文件名校验和(Checksum)
LDIR_Name2
0x0E
12
长文件名的第 6-11 个字符
LDIR_FstClusLO
0x1A
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
0x1C
4
长文件名的第 12-13 个字符

 
长文件名字符采用 Unicode 编码。
 
Checksum 算法,用 C 语言实现如下:
//------------------------------------------------------------------------
 
本站域名:www.mrtlab.com | QQ交流群:250649022 | 使用条款 | 备案:鄂ICP备2020023514号
MRT数据恢复网,专业的硬盘固件维修与数据恢复技术资料提供站!
Copyright 2003-2020 Powered By MrtLab