VFAT 文件系统结构详解(阿甘译)

VFAT文件系统在Windows NT 3.5和Windows 95中引入,主要增加了对长文件名的支持。它保留了与DOS 6.22及更高版本的FAT文件系统大部分兼容性。文件名长度可达255个字符,包括空格和小写字母。扩展FAT通过插入附加目录入口支持长文件名,这些入口作为传统8.3命名的扩展。每个附加入口包含序列号、名字、属性等信息,并使用特定算法保证与旧版软件兼容。VFAT还涉及UNICODE存储,对某些字符进行了特殊处理以避免冲突。
摘要由CSDN通过智能技术生成

http://www.nondot.org/sabre/os/files/FileSystems/VFATInfo.txt

VFAT 文件系统结构详解
------------------------------------------------------------------------------------
(这篇文档是由Galen C. Hunt<gchunt@cs.rochester.edu>提供,并由Gordon Chaffee略加注释)

    这篇文档提供了一个我对在Windows NT 3.5和Windows 95上使用的扩展FAT文件系统,一些粗略的、技术性的概貌上的理解。我并不保证下面的观点是正确的,虽然它显得是正确的。

   扩展FAT文件系统几乎和在DOS 6.223410239847以上版本(包括6.223410239847 版)上使用的FAT文件系统完全相同,最重大的改变就是对长文件名的支持。它使名字长度上升到255个字符,包括空格和小写字母,而传统的只支持8.3名字长度。(8个字符的主文件名,3个字符的扩展文件名)

  下面是对现在的Windows 95文件系统上,传统的FAT接口描述:

   struct directory { // 短 8.3 命名
                              unsigned char name[8];                     // 主文件名
                              unsigned char ext[3];                          // 文件扩展名
                              unsigned char attr;                              // 属性字节
                              unsigned char lcase;                           // 主文件名和扩展名的大小写标志
                              unsigned char ctime_ms;                    // 创建时间(微秒)
                              unsigned char ctime[2];                      // 创建时间
                              unsigned char cdate[2];                      // 创建日期
                              unsigned char adate[2];                      // 最后一次访问日期
                              unsigned char reserved[2];                // 保留字节 (忽略) 
                              unsigned char time[2];                        // 时间戳
                              unsigned char date[2];                        // 日期戳 
                              unsigned char start[2];                        // 开始簇号 
                              unsigned char size[4];                         // 文件的大小
               };


        其中的lcase域描述主文件名和(或者)扩展文件名《基于8.3命名》是否是大写。这个域似乎没有在Windows 95上使用,但是已经在Windows NT上得到应用。名字的大小写从Windows NT 到 Windows 95并不完全兼容,反之也不完全兼容。Windows NT上使用8.3命名空间的、小写的文件名将会在Windows95上变成大写的。

       注意:"start"域和"sized"域的值小端整数值。(关于大端、小端都是数据在内存中存储方式的描述)对这个结构中的域的解释都已经为大家所知晓,能在其他很多地方找到。

       在扩展FAT文件系统中,Microsoft 为任何使用了扩展名字的文件,插入了一些附加目录入口。(任何符合老式的8.3编码规则的名字都不会有附加的项目) 我把这些叫做附加进入接口。基本上,一个接口就是一个特殊格式的目录进入点,这个进入点能够支持13个字符的文件扩展命名。可以把这些接口看作是额外的与文件目录进入点相对应的标签。Microsoft 倾向于把8.3命名作为文件的别名,而把扩展的文件目录进入点做为文件名。
    下面是目录进入点接口的C语言结构:

        struct slot { // 扩充至13个字符的长文件名 
                               unsigned char id                                      // 接口的序列号
                               unsigned char name0_4[10];                  // 名字的前5个字符 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值