exFAT 文件系统规范exFAT file system specification

1 简介1 Introduction

ExFAT 文件系统是 FAT 文件系统中的 FAT32 的后继版本。The exFAT file system is the successor to FAT32 in the FAT family of file systems. 此规范描述 exFAT 文件系统,并提供实现 exFAT 文件系统所需的所有信息。This specification describes the exFAT file system and provides all the information necessary for implementing the exFAT file system.

1.1 设计目标1.1 Design Goals

ExFAT 文件系统具有三个集中设计目标 (参阅下面的列表) 。The exFAT file system has three central design goals (see list below).

  1. 保留基于 FAT 的文件系统的简单性。Retain the simplicity of FAT-based file systems.

    基于 FAT 的文件系统的两大优点是它们相对简单且易于实现。Two of the strengths of FAT-based file systems are their relative simplicity and ease of implementation. 作为其前置任务的精神,实施人员应发现 exFAT 相对简单,并且易于实现。In the spirit of its predecessors, implementers should find exFAT relatively simple and easy to implement.

  2. 启用非常大的文件和存储设备。Enable very large files and storage devices.

    ExFAT 文件系统使用64位来描述文件大小,从而使应用程序依赖于非常大的文件。The exFAT file system uses 64 bits to describe file size, thereby enabling applications which depend on very large files. ExFAT 文件系统还允许将群集当作32MB,从而有效地启用非常大的存储设备。The exFAT file system also allows for clusters as large as 32MB, effectively enabling very large storage devices.

  3. 为未来创新引入可扩展性。Incorporate extensibility for future innovation.

    ExFAT 文件系统在其设计中包含了可扩展性,使文件系统可以与存储的创新和使用情况的变化保持同步。The exFAT file system incorporates extensibility into its design, enabling the file system to keep pace with innovations in storage and changes in usage.

1.2 特定术语1.2 Specific Terminology

在此规范的上下文中,某些术语 (参阅 表 1) 为 exFAT 文件系统的设计和实现指定特定含义。In the context of this specification, certain terms (see Table 1) carry specific meaning for the design and implementation of the exFAT file system.

表1具有特别意义的术语的定义Table 1 Definition of Terms Which Carry Very Specific Meaning

条款Term 定义Definition
对本Shall 此规范使用术语 "应" 描述强制行为。This specification uses the term “shall” to describe a behavior which is mandatory.
决不Should 此规范使用术语 "应该" 来描述强烈建议的行为,但不强制执行。This specification uses the term “should” to describe a behavior which it strongly recommends, but does not make mandatory.
五月May 此规范使用术语 "可能" 描述可选的行为。This specification uses the term “may” to describe a behavior which is optional.
必需Mandatory 此术语描述了实现应修改并应解释为此规范描述的字段或结构。This term describes a field or structure which an implementation shall modify and shall interpret as this specification describes.
可选Optional 此术语描述了实现可能支持或不支持的字段或结构。This term describes a field or structure which an implementation may or may not support. 如果某个实现支持给定的可选字段或结构,则它应按照此规范的说明修改并应解释该字段或结构。If an implementation supports a given optional field or structure, it shall modify and shall interpret the field or structure as this specification describes.
UndefinedUndefined 此术语描述了实现可在必要时修改的字段或结构内容 (例如,在设置周围字段或) 结构时清除为零,而不会解释为包含任何特定含义。This term describes field or structure contents which an implementation may modify as necessary (i.e. clear to zero when setting surrounding fields or structures) and shall not interpret to hold any specific meaning.
保留Reserved

此术语描述实现的字段或结构内容:This term describes field or structure contents which implementations:

  1. 应初始化为零,且不应将其用于任何用途Shall initialize to zero and should not use for any purpose

  2. 不应解释,除非计算校验和Should not interpret, except when computing checksums

  3. 应跨修改周围字段或结构的操作进行保留Shall preserve across operations which modify surrounding fields or structures

1.3 全文首字母缩写词1.3 Full Text of Common Acronyms

此规范使用个人计算机行业中常见的首字母缩写 (参阅 表 2) 。This specification uses acronyms in common use in the personal computer industry (see Table 2).

表2常见首字母缩写词Table 2 Full Text of Common Acronyms

首字母缩写词Acronym 全文Full Text
ASCIIASCII ASCII (American Standard Code for Information Interchange) American Standard Code for Information Interchange
BIOSBIOS 基本输入输出系统Basic Input Output System
CPUCPU 中央处理单元Central Processing Unit
exFATexFAT 可扩展文件分配表extensible File Allocation Table
FATFAT 文件分配表File Allocation Table
FAT12FAT12 文件分配表,12位群集索引File Allocation Table, 12-bit cluster indices
FAT16FAT16 文件分配表,16位群集索引File Allocation Table, 16-bit cluster indices
FAT32FAT32 文件分配表,32位群集索引File Allocation Table, 32-bit cluster indices
GPTGPT GUID 分区表GUID Partition Table
GUIDGUID 全局唯一标识符 (参阅 10.1 节) Globally Unique Identifier (see Section 10.1)
INTINT 中断Interrupt
MBRMBR 主启动记录Master Boot Record
texFATtexFAT 事务安全 exFATTransaction-safe exFAT
UTCUTC 协调世界时Coordinated Universal Time

1.4 默认字段和结构限定符1.4 Default Field and Structure Qualifiers

此规范中的字段和结构具有以下限定符 (请参阅下面的列表) ,除非规范说明。Fields and structures in this specification have the following qualifiers (see list below), unless the specification notes otherwise.

  1. 无符号Are unsigned

  2. 使用十进制表示法描述值,如果没有另行说明,则为。此规范使用后修复后的字母 "h" 来表示十六进制数字,并将 Guid 括在大括号中Use decimal notation to describe values, where not otherwise noted; this specification uses the post-fix letter "h" to denote hexadecimal numbers and encloses GUIDs in curly braces

  3. 采用小字节序格式Are in little-endian format

  4. 不需要字符串的 null 终止字符Do not require a null-terminating character for strings

1.5 Windows CE 和 TexFAT1.5 Windows CE and TexFAT

TexFAT 是 exFAT 的扩展,它在基本文件系统的顶层添加事务安全操作语义。TexFAT is an extension to exFAT that adds transaction-safe operational semantics on top of the base file system. Windows CE 使用 TexFAT。TexFAT is used by Windows CE. TexFAT 要求使用两个 FATs 和分配位图来在事务中使用。TexFAT requires the use of the two FATs and allocation bitmaps for use in transactions. 它还定义了几个附加结构,包括填充描述符和安全描述符。It also defines several additional structures including padding descriptors and security descriptors.

2卷结构2 Volume Structure

卷是存储和检索用户数据所需的所有文件系统结构和数据空间的集合。A volume is the set of all file system structures and data space necessary to store and retrieve user data. 所有 exFAT 卷都包含四个区域 (参阅 Table 3) 。All exFAT volumes contain four regions (see Table 3).

表3卷结构Table 3 Volume Structure

子区域名称Sub-region Name

OffsetOffset

(扇区) (sector)

大小Size

(扇区) (sectors)

注释Comments
主启动区域Main Boot Region
主引导扇区Main Boot Sector 00 11 此子区域是必需的, 3.1 节 定义其内容。This sub-region is mandatory and Section 3.1 defines its contents.
主扩展引导扇区Main Extended Boot Sectors 11 88 此子区域是必需的, 第3.2 节) 定义其内容。This sub-region is mandatory and Section 3.2) defines its contents.
主要 OEM 参数Main OEM Parameters 99 11 此子区域是必需的, 3.3 节 定义其内容。This sub-region is mandatory and Section 3.3 defines its contents.
主保留Main Reserved 1010 11 此子区域是必需的,其内容已保留。This sub-region is mandatory and its contents are reserved.
主启动校验和Main Boot Checksum 1111 11 此子区域是必需的, 3.4 节 定义其内容。This sub-region is mandatory and Section 3.4 defines its contents.
备份启动区域Backup Boot Region
备份引导扇区Backup Boot Sector 1212 11 此子区域是必需的, 3.1 节 定义其内容。This sub-region is mandatory and Section 3.1 defines its contents.
备份扩展引导扇区Backup Extended Boot Sectors 1313 88 此子区域是必需的, 3.2 节 定义其内容。This sub-region is mandatory and Section 3.2 defines its contents.
备份 OEM 参数Backup OEM Parameters 2121 11 此子区域是必需的, 3.3 节 定义其内容。This sub-region is mandatory and Section 3.3 defines its contents.
保留备份Backup Reserved 2222 11 此子区域是必需的,其内容已保留。This sub-region is mandatory and its contents are reserved.
备份启动校验和Backup Boot Checksum 2323 11 此子区域是必需的, 3.4 节 定义其内容。This sub-region is mandatory and Section 3.4 defines its contents.
FAT 区域FAT Region
FAT 对齐方式FAT Alignment 2424 FatOffset –24FatOffset – 24

此子区域是必需的,其内容(如果有)未定义。This sub-region is mandatory and its contents, if any, are undefined.

注意:主和备份引导扇区都包含 FatOffset 字段。Note: the Main and Backup Boot Sectors both contain the FatOffset field.

首个 FATFirst FAT FatOffsetFatOffset FatLengthFatLength

此子区域是必需的, 4.1 节 定义其内容。This sub-region is mandatory and Section 4.1 defines its contents.

注意:主和备份引导扇区都包含 FatOffset 和 FatLength 字段。Note: the Main and Backup Boot Sectors both contain the FatOffset and FatLength fields.

第二个 FATSecond FAT FatOffset + FatLengthFatOffset + FatLength FatLength \* (NumberOfFats – 1) FatLength \* (NumberOfFats – 1)

此子区域是必需的, 4.1 节 定义其内容(如果有)。This sub-region is mandatory and Section 4.1 defines its contents, if any.

注意:主和备份引导扇区都包含 FatOffset、FatLength 和 NumberOfFats 字段。Note: the Main and Backup Boot Sectors both contain the FatOffset, FatLength, and NumberOfFats fields. NumberOfFats 字段可能只包含值1和2。The NumberOfFats field may only hold values 1 and 2.

数据区域Data Region
群集堆对齐Cluster Heap Alignment FatOffset + FatLength \* NumberOfFatsFatOffset + FatLength \* NumberOfFats ClusterHeapOffset – (FatOffset + FatLength \* NumberOfFats) ClusterHeapOffset – (FatOffset + FatLength \* NumberOfFats)

此子区域是必需的,其内容(如果有)未定义。This sub-region is mandatory and its contents, if any, are undefined.

注意:主和备份引导扇区都包含 FatOffset、FatLength、NumberOfFats 和 ClusterHeapOffset 字段。Note: the Main and Backup Boot Sectors both contain the FatOffset, FatLength, NumberOfFats, and ClusterHeapOffset fields. NumberOfFats 字段的有效值为1和2。The NumberOfFats field’s valid values are 1 and 2.

群集堆Cluster Heap ClusterHeapOffsetClusterHeapOffset ClusterCount \* 2SectorsPerClusterShiftClusterCount \* 2SectorsPerClusterShift

此子区域是必需的, 5.1 节 定义其内容。This sub-region is mandatory and Section 5.1 defines its contents.

注意:主和备份引导扇区都包含 ClusterHeapOffset、ClusterCount 和 SectorsPerClusterShift 字段。Note: the Main and Backup Boot Sectors both contain the ClusterHeapOffset, ClusterCount, and SectorsPerClusterShift fields.

多余的空间Excess Space ClusterHeapOffset + ClusterCount \* 2SectorsPerClusterShiftClusterHeapOffset + ClusterCount \* 2SectorsPerClusterShift VolumeLength – (ClusterHeapOffset + ClusterCount \* 2SectorsPerClusterShift) VolumeLength – (ClusterHeapOffset + ClusterCount \* 2SectorsPerClusterShift)

此子区域是必需的,其内容(如果有)未定义。This sub-region is mandatory and its contents, if any, are undefined.

注意:主和备份引导扇区都包含 ClusterHeapOffset、ClusterCount、SectorsPerClusterShift 和 VolumeLength 字段。Note: the Main and Backup Boot Sectors both contain the ClusterHeapOffset, ClusterCount, SectorsPerClusterShift, and VolumeLength fields.

3主和备份启动区域3 Main and Backup Boot Regions

主引导区域提供所有必需的 strapping 指令、标识信息和文件系统参数,使实现能够执行以下操作:The Main Boot region provides all the necessary boot-strapping instructions, identifying information, and file system parameters to enable an implementation to perform the following:

  1. 从 exFAT 卷引导计算机系统。Boot-strap a computer system from an exFAT volume.

  2. 将卷上的文件系统标识为 exFAT。Identify the file system on the volume as exFAT.

  3. 发现 exFAT 文件系统结构的位置。Discover the location of the exFAT file system structures.

备份引导区域是主启动区域的备份。The Backup Boot region is a backup of the Main Boot region. 它在主启动区域发生处于不一致状态时辅助恢复 exFAT 卷。It aids recovery of the exFAT volume in the event of the Main Boot region being in an inconsistent state. 除非在不常见的情况下(例如更新 strapping 指令),否则,实现不应修改备份启动区域的内容。Except under infrequent circumstances, such as updating boot-strapping instructions, implementations should not modify the contents of the Backup Boot region.

3.1 主和备份引导扇区子区域3.1 Main and Backup Boot Sector Sub-regions

主引导扇区包含 exFAT 卷中 strapping 的代码,以及描述卷结构的基础 exFAT 参数 (参阅 表 4) 。The Main Boot Sector contains code for boot-strapping from an exFAT volume and fundamental exFAT parameters which describe the volume structure (see Table 4). BIOS、MBR 或其他 strapping 代理可能会检查此扇区,并可能加载和执行其中包含的任何 strapping 指令。BIOS, MBR, or other boot-strapping agents may inspect this sector and may load and execute any boot-strapping instructions contained therein.

备份引导扇区是主引导扇区的备份,具有相同的结构 (参阅 表 4) 。The Backup Boot Sector is a backup of the Main Boot Sector and has the same structure (see Table 4). 备份引导扇区可以帮助恢复操作;但是,实现应将 VolumeFlags 和 PercentInUse 字段的内容视为过时。The Backup Boot Sector may aid recovery operations; however, implementations shall treat the contents of the VolumeFlags and PercentInUse fields as stale.

在使用主或备份引导扇区的内容之前,实现应验证其内容,方法是验证其各自的启动校验和,并确保其所有字段在其有效的值范围内。Prior to using the contents of either the Main or Backup Boot Sector, implementations shall verify their contents by validating their respective Boot Checksum and ensuring all their fields are within their valid value range.

虽然初始格式操作将初始化主和备份引导扇区的内容,但实现可能会更新这些扇区 (并且还应根据需要更新各自的启动校验和) 。While the initial format operation will initialize the contents of both the Main and Backup Boot Sectors, implementations may update these sectors (and shall also update their respective Boot Checksum) as needed. 但是,实现可以更新 VolumeFlags 或 PercentInUse 字段,而无需更新其各自的启动校验和 (校验和具体排除这两个字段) 。However, implementations may update either the VolumeFlags or PercentInUse fields without updating their respective Boot Checksum (the checksum specifically excludes these two fields).

表4主和备份启动扇区结构Table 4 Main and Backup Boot Sector Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
JumpBootJumpBoot 00 33 此字段是必需的,并且 节 3.1.1 定义其内容。This field is mandatory and Section 3.1.1 defines its contents.
FileSystemNameFileSystemName 33 88 此字段是必需的,并且 节 3.1.2 定义其内容。This field is mandatory and Section 3.1.2 defines its contents.
MustBeZeroMustBeZero 1111 5353 此字段是必需的,并且 节 3.1.3 定义其内容。This field is mandatory and Section 3.1.3 defines its contents.
PartitionOffsetPartitionOffset 6464 88 此字段是必需的,并且 节 3.1.4 定义其内容。This field is mandatory and Section 3.1.4 defines its contents.
VolumeLengthVolumeLength 7272 88 此字段是必需的,并且 节 3.1.5 定义其内容。This field is mandatory and Section 3.1.5 defines its contents.
FatOffsetFatOffset 8080 44 此字段是必需的,并且 节 3.1.6 定义其内容。This field is mandatory and Section 3.1.6 defines its contents.
FatLengthFatLength 8484 44 此字段是必需的,并且 节 3.1.7 定义其内容。This field is mandatory and Section 3.1.7 defines its contents.
ClusterHeapOffsetClusterHeapOffset 8888 44 此字段是必需的,并且 节 3.1.8 定义其内容。This field is mandatory and Section 3.1.8 defines its contents.
ClusterCountClusterCount 9292 44 此字段是必需的,并且 节 3.1.9 定义其内容。This field is mandatory and Section 3.1.9 defines its contents.
FirstClusterOfRootDirectoryFirstClusterOfRootDirectory 9696 44 此字段是必需的,并且 节 3.1.10 定义其内容。This field is mandatory and Section 3.1.10 defines its contents.
VolumeSerialNumberVolumeSerialNumber 100100 44 此字段是必需的,并且 节 3.1.11 定义其内容。This field is mandatory and Section 3.1.11 defines its contents.
FileSystemRevisionFileSystemRevision 104104 22 此字段是必需的,并且 节 3.1.12 定义其内容。This field is mandatory and Section 3.1.12 defines its contents.
VolumeFlagsVolumeFlags 106106 22 此字段是必需的,并且 节 3.1.13 定义其内容。This field is mandatory and Section 3.1.13 defines its contents.
BytesPerSectorShiftBytesPerSectorShift 108108 11 此字段是必需的,并且 节 3.1.14 定义其内容。This field is mandatory and Section 3.1.14 defines its contents.
SectorsPerClusterShiftSectorsPerClusterShift 109109 11 此字段是必需的,并且 节 3.1.15 定义其内容。This field is mandatory and Section 3.1.15 defines its contents.
NumberOfFatsNumberOfFats 110110 11 此字段是必需的,并且 节 3.1.16 定义其内容。This field is mandatory and Section 3.1.16 defines its contents.
DriveSelectDriveSelect 111111 11 此字段是必需的,并且 节 3.1.17 定义其内容。This field is mandatory and Section 3.1.17 defines its contents.
PercentInUsePercentInUse 112112 11 此字段是必需的,并且 节 3.1.18 定义其内容。This field is mandatory and Section 3.1.18 defines its contents.
保留Reserved 113113 77 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
启动BootCode 120120 390390 此字段是必需的,并且 节 3.1.19 定义其内容。This field is mandatory and Section 3.1.19 defines its contents.
BootSignatureBootSignature 510510 22 此字段是必需的,并且 节 3.1.20 定义其内容。This field is mandatory and Section 3.1.20 defines its contents.
ExcessSpaceExcessSpace 512512 2BytesPerSectorShift –5122BytesPerSectorShift – 512

此字段是必需的,其内容(如果有)未定义。This field is mandatory and its contents, if any, are undefined.

注意:主和备份引导扇区都包含 BytesPerSectorShift 字段。Note: the Main and Backup Boot Sectors both contain the BytesPerSectorShift field.

3.1.1 JumpBoot 字段3.1.1 JumpBoot Field

"JumpBoot" 字段应包含个人计算机中常见的 Cpu 的跳转说明,在执行该操作时,将 CPU "跳转" 到 "启动" 字段中的 strapping 指令。The JumpBoot field shall contain the jump instruction for CPUs common in personal computers, which, when executed, "jumps" the CPU to execute the boot-strapping instructions in the BootCode field.

此字段的有效值 (按低序位字节到高序位字节) EBh 76h 90h。The valid value for this field is (in order of low-order byte to high-order byte) EBh 76h 90h.

3.1.2 FileSystemName 字段3.1.2 FileSystemName Field

FileSystemName 字段应包含卷上的文件系统的名称。The FileSystemName field shall contain the name of the file system on the volume.

此字段的有效值为 ASCII 字符 "EXFAT",其中包含三个尾随空格。The valid value for this field is, in ASCII characters, "EXFAT ", which includes three trailing white spaces.

3.1.3 MustBeZero 字段3.1.3 MustBeZero Field

MustBeZero 字段应直接对应于打包的 BIOS 参数块在 FAT12/16/32 卷上使用的字节范围。The MustBeZero field shall directly correspond with the range of bytes the packed BIOS parameter block consumes on FAT12/16/32 volumes.

此字段的有效值为0,这有助于防止 FAT12/16/32 实现错误地装入 exFAT 卷。The valid value for this field is 0, which helps to prevent FAT12/16/32 implementations from mistakenly mounting an exFAT volume.

3.1.4 PartitionOffset 字段3.1.4 PartitionOffset Field

PartitionOffset 字段应描述承载给定 exFAT 卷的分区的媒体相关扇区偏移量。The PartitionOffset field shall describe the media-relative sector offset of the partition which hosts the given exFAT volume. 此字段使用个人计算机上的扩展的 INT 13h 来帮助从卷启动 strapping。This field aids boot-strapping from the volume using extended INT 13h on personal computers.

此字段的所有可能值都有效;但是,值0指示实现应忽略此字段。All possible values for this field are valid; however, the value 0 indicates implementations shall ignore this field.

3.1.5 VolumeLength 字段3.1.5 VolumeLength Field

VolumeLength 字段应描述扇区中给定 exFAT 卷的大小。The VolumeLength field shall describe the size of the given exFAT volume in sectors.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少2个20/2BytesPerSectorShift,这可确保最小卷小于1mbAt least 220/ 2BytesPerSectorShift, which ensures the smallest volume is no less than 1MB

  • 最多2个64-1,此字段可以描述的最大值At most 264- 1, the largest value this field can describe

但是,如果多余的空间子区域的大小为0,则此字段的值为 ClusterHeapOffset + (232-11) * 2SectorsPerClusterShiftHowever, if the size of the Excess Space sub-region is 0, then the value of this field is ClusterHeapOffset + (232- 11) * 2SectorsPerClusterShift.

3.1.6 FatOffset 字段3.1.6 FatOffset Field

FatOffset 字段应描述第一个 FAT 的卷相对扇区偏移量。The FatOffset field shall describe the volume-relative sector offset of the First FAT. 此字段使实现能够将第一个 FAT 与基础存储媒体的特征进行对齐。This field enables implementations to align the First FAT to the characteristics of the underlying storage media.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少为24,主要启动和备份启动区域使用的扇区帐户At least 24, which accounts for the sectors the Main Boot and Backup Boot regions consume

  • 最多 ClusterHeapOffset- (FatLength * NumberOfFats) ,这是群集堆使用的扇区的帐户At most ClusterHeapOffset - (FatLength * NumberOfFats), which accounts for the sectors the Cluster Heap consumes

3.1.7 FatLength 字段3.1.7 FatLength Field

"FatLength" 字段应描述每个 FAT (表的长度(以扇区为准),其中最多可以包含两个 FATs) 。The FatLength field shall describe the length, in sectors, of each FAT table (the volume may contain up to two FATs).

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少 (ClusterCount + 2) * 22/2BytesPerSectorShift舍入为最接近的整数,这可确保每个 FAT 都有足够的空间来描述群集堆中的所有群集At least (ClusterCount + 2) * 22/ 2BytesPerSectorShiftrounded up to the nearest integer, which ensures each FAT has sufficient space for describing all the clusters in the Cluster Heap

  • 最多 (ClusterHeapOffset-FatOffset) /NumberOfFats 向下舍入到最接近的整数,这可确保 FATs 存在于群集堆之前At most (ClusterHeapOffset - FatOffset) / NumberOfFats rounded down to the nearest integer, which ensures the FATs exist before the Cluster Heap

此字段可能包含超过其下限 (的值,如上文所述) 启用第二个 FAT (如果有)也与基础存储媒体的特征对齐。This field may contain a value in excess of its lower bound (as described above) to enable the Second FAT, if present, to also be aligned to the characteristics of the underlying storage media. 空间的内容超出了 FAT 本身所需的内容(如果有)未定义。The contents of the space which exceeds what the FAT itself requires, if any, are undefined.

3.1.8 ClusterHeapOffset 字段3.1.8 ClusterHeapOffset Field

ClusterHeapOffset 字段应描述群集堆的卷相对扇区偏移量。The ClusterHeapOffset field shall describe the volume-relative sector offset of the Cluster Heap. 此字段使实现能够将群集堆与基础存储媒体的特征进行对齐。This field enables implementations to align the Cluster Heap to the characteristics of the underlying storage media.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少 FatOffset + FatLength * NumberOfFats,才能考虑前面所有区域所使用的扇区At least FatOffset + FatLength * NumberOfFats, to account for the sectors all the preceding regions consume

  • 最多2个32-1 或 VolumeLength (ClusterCount * 2SectorsPerClusterShift) ,以两者为准At most 232- 1 or VolumeLength - (ClusterCount * 2SectorsPerClusterShift), whichever calculation is less

3.1.9 ClusterCount 字段3.1.9 ClusterCount Field

ClusterCount 字段应描述群集堆包含的群集数。The ClusterCount field shall describe the number of clusters the Cluster Heap contains.

此字段的有效值应为以下值中的较小者:The valid value for this field shall be the lesser of the following:

  • (VolumeLength-ClusterHeapOffset) /2SectorsPerClusterShift舍入到最接近的整数,该整数正好是群集堆开头和卷末尾之间可容纳的分类数(VolumeLength - ClusterHeapOffset) / 2SectorsPerClusterShiftrounded down to the nearest integer, which is exactly the number of clusters which can fit between the beginning of the Cluster Heap and the end of the volume

  • 232-11,它是 FAT 可以描述的最大分类数232- 11, which is the maximum number of clusters a FAT can describe

ClusterCount 字段的值确定 FAT 的最小大小。The value of the ClusterCount field determines the minimum size of a FAT. 为了避免极大的 FATs,实现可以通过将群集大小增加 (通过 SectorsPerClusterShift 字段) ,来控制群集堆中的分类数。To avoid extremely large FATs, implementations can control the number of clusters in the Cluster Heap by increasing the cluster size (via the SectorsPerClusterShift field). 此规范建议在群集堆中不超过2个24-2 群集。This specification recommends no more than 224- 2 clusters in the Cluster Heap. 但是,实现应能够在群集堆中处理最多2个32-11 群集的卷。However, implementations shall be able to handle volumes with up to 232- 11 clusters in the Cluster Heap.

3.1.10 FirstClusterOfRootDirectory 字段3.1.10 FirstClusterOfRootDirectory Field

FirstClusterOfRootDirectory 字段应包含根目录的第一个群集的群集索引。The FirstClusterOfRootDirectory field shall contain the cluster index of the first cluster of the root directory. 在分配位图和 Up 事例表使用的群集后,实现应将根目录的第一个群集放在第一个不坏的群集中。Implementations should make every effort to place the first cluster of the root directory in the first non-bad cluster after the clusters the Allocation Bitmap and Up-case Table consume.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少2个群集堆中第一个群集的索引At least 2, the index of the first cluster in the Cluster Heap

  • 最多 ClusterCount + 1,群集堆中最后一个群集的索引At most ClusterCount + 1, the index of the last cluster in the Cluster Heap

3.1.11 VolumeSerialNumber 字段3.1.11 VolumeSerialNumber Field

VolumeSerialNumber 字段应包含唯一序列号。The VolumeSerialNumber field shall contain a unique serial number. 这有助于实现区分不同的 exFAT 卷。This assists implementations to distinguish among different exFAT volumes. 实现应通过组合 exFAT 卷格式的日期和时间来生成序列号。Implementations should generate the serial number by combining the date and time of formatting the exFAT volume. 组合日期和时间以形成序列号的机制是特定于实现的。The mechanism for combining date and time to form a serial number is implementation-specific.

此字段的所有可能值都有效。All possible values for this field are valid.

3.1.12 FileSystemRevision 字段3.1.12 FileSystemRevision Field

FileSystemRevision 字段应描述给定卷上 exFAT 结构的主要和次要修订号。The FileSystemRevision field shall describe the major and minor revision numbers of the exFAT structures on the given volume.

高序位字节是主要修订号,低序位字节是次要修订号。The high-order byte is the major revision number and the low-order byte is the minor revision number. 例如,如果高序位字节包含值01h,并且低序位字节包含值05h,则 FileSystemRevision 字段将描述版本号1.05。For example, if the high-order byte contains the value 01h and if the low-order byte contains the value 05h, then the FileSystemRevision field describes the revision number 1.05. 同样,如果高序位字节包含值0Ah 并且低序位字节包含值0Fh,则 FileSystemRevision 字段将描述修订版编号10.15。Likewise, if the high-order byte contains the value 0Ah and if the low-order byte contains the value 0Fh, then the FileSystemRevision field describes the revision number 10.15.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 低序位字节至少为0,高序位字节至少为1At least 0 for the low-order byte and 1 for the high-order byte

  • 对于高位字节,最多为99,最高序位为99At most 99 for the low-order byte and 99 for the high-order byte

此规范描述的 exFAT 的修订号为1.00。The revision number of exFAT this specification describes is 1.00. 此规范的实现应装载主修订版号为1的任何 exFAT 卷,而不会装载任何其他主要修订号为的 exFAT 卷。Implementations of this specification should mount any exFAT volume with major revision number 1 and shall not mount any exFAT volume with any other major revision number. 实现应遵循次要修订号,不应执行操作,也不会创建在给定的次要修订号的相应规范中未描述的任何文件系统结构。Implementations shall honor the minor revision number and shall not perform operations or create any file system structures not described in the given minor revision number's corresponding specification.

3.1.13 VolumeFlags 字段3.1.13 VolumeFlags Field

VolumeFlags 字段应包含标志,指示 exFAT 卷上的各种文件系统结构的状态 (参阅 表 5) 。The VolumeFlags field shall contain flags which indicate the status of various file system structures on the exFAT volume (see Table 5).

在计算各自的主要启动或备份启动区域校验和时,实现不应包括此字段。Implementations shall not include this field when computing its respective Main Boot or Backup Boot region checksum. 当引用备份引导扇区时,实现应将此字段视为过时。When referring to the Backup Boot Sector, implementations shall treat this field as stale.

表 5 VolumeFlags 字段结构Table 5 VolumeFlags Field Structure

字段名称Field Name

OffsetOffset

(位) (bit)

大小Size

(位) (bits)

注释Comments
ActiveFatActiveFat 00 11 此字段是必需的,并且 节 3.1.13.1 定义其内容。This field is mandatory and Section 3.1.13.1 defines its contents.
VolumeDirtyVolumeDirty 11 11 此字段是必需的,并且 节 3.1.13.2 定义其内容。This field is mandatory and Section 3.1.13.2 defines its contents.
MediaFailureMediaFailure 22 11 此字段是必需的,并且 节 3.1.13.3 定义其内容。This field is mandatory and Section 3.1.13.3 defines its contents.
ClearToZeroClearToZero 33 11 此字段是必需的,并且 节 3.1.13.4 定义其内容。This field is mandatory and Section 3.1.13.4 defines its contents.
保留Reserved 44 1212 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
3.1.13.1 ActiveFat 字段3.1.13.1 ActiveFat Field

ActiveFat 字段应描述 (和实现应使用) 的 FAT 和分配位图,如下所示:The ActiveFat field shall describe which FAT and Allocation Bitmap are active (and implementations shall use), as follows:

  • 0,这意味着第一个 FAT 和第一个分配位图是活动的0, which means the First FAT and First Allocation Bitmap are active

  • 1,这意味着第二个 FAT 和第二个分配位图处于活动状态,并且仅当 NumberOfFats 字段包含值2时才可能出现这种情况。1, which means the Second FAT and Second Allocation Bitmap are active and is possible only when the NumberOfFats field contains the value 2

实现应将非活动 FAT 和分配位图视为过时。Implementations shall consider the inactive FAT and Allocation Bitmap as stale. 只有 TexFAT 感知实现应切换活动的 FAT 和分配位图 (参见 7.1) 部分Only TexFAT-aware implementations shall switch the active FAT and Allocation Bitmaps (see Section 7.1).

3.1.13.2 VolumeDirty 字段3.1.13.2 VolumeDirty Field

VolumeDirty 字段应描述卷是否已更新,如下所示:The VolumeDirty field shall describe whether the volume is dirty or not, as follows:

  • 0,这意味着卷可能处于一致状态0, which means the volume is probably in a consistent state

  • 1,表示卷可能处于不一致状态1, which means the volume is probably in an inconsistent state

在遇到不能解析的文件系统元数据不一致时,实现应将此字段的值设置为1。Implementations should set the value of this field to 1 upon encountering file system metadata inconsistencies which they do not resolve. 如果在装载卷时,此字段的值为1,则只有解析文件系统元数据不一致的实现可能会清除此字段的值为0。If, upon mounting a volume, the value of this field is 1, only implementations which resolve file system metadata inconsistencies may clear the value of this field to 0. 此类实现仅应在确保文件系统处于一致状态后将此字段的值清除为0。Such implementations shall only clear the value of this field to 0 after ensuring the file system is in a consistent state.

如果在装载卷时,此字段的值为0,则在更新文件系统元数据之前,实现应将此字段设置为1,并在之后将此字段设置为0,这类似于 第8.1 节中所述的建议写入排序。If, upon mounting a volume, the value of this field is 0, implementations should set this field to 1 before updating file system metadata and clear this field to 0 afterwards, similar to the recommended write ordering described in Section 8.1.

3.1.13.3 MediaFailure 字段3.1.13.3 MediaFailure Field

MediaFailure 字段应描述某个实现是否已发现媒体故障,如下所示:The MediaFailure field shall describe whether an implementation has discovered media failures or not, as follows:

  • 0,这意味着主机介质未报告故障,或者任何已知故障已在 FAT 中记录为 "不良" 群集0, which means the hosting media has not reported failures or any known failures are already recorded in the FAT as "bad" clusters

  • 1,这意味着宿主媒体报告了失败 (例如,读取或写入操作失败) 1, which means the hosting media has reported failures (i.e. has failed read or write operations)

在以下情况下,实现应将此字段设置为1:An implementation should set this field to 1 when:

  1. 托管媒体无法访问卷中的任何区域The hosting media fails access attempts to any region in the volume

  2. 实现已用尽访问重试算法(如果有)The implementation has exhausted access retry algorithms, if any

如果在装载卷时,此字段的值为1,则将扫描整个卷的介质故障,并将所有故障记录为 FAT (中的 "错误" 群集,) 否则会将此字段的值清除为0。If, upon mounting a volume, the value of this field is 1, implementations which scan the entire volume for media failures and record all failures as "bad" clusters in the FAT (or otherwise resolve media failures) may clear the value of this field to 0.

3.1.13.4 ClearToZero 字段3.1.13.4 ClearToZero Field

ClearToZero 字段在此规范中没有明显含义。The ClearToZero field does not have significant meaning in this specification.

此字段的有效值为:The valid values for this field are:

  • 0,没有任何特殊含义0, which does not have any particular meaning

  • 1,这意味着在修改任何文件系统结构、目录或文件之前,实现应将此字段清除为01, which means implementations shall clear this field to 0 prior to modifying any file system structures, directories, or files

3.1.14 BytesPerSectorShift 字段3.1.14 BytesPerSectorShift Field

BytesPerSectorShift 字段应描述每个扇区的字节数,表示为日志2 (N) ,其中 N 是每个扇区的字节数。The BytesPerSectorShift field shall describe the bytes per sector expressed as log2(N), where N is the number of bytes per sector. 例如,对于每个扇区512字节,此字段的值为9。For example, for 512 bytes per sector, the value of this field is 9.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少9个 (扇区大小为512字节) ,这是 exFAT 卷可能的最小扇区At least 9 (sector size of 512 bytes), which is the smallest sector possible for an exFAT volume

  • 最多12个 (扇区大小为4096字节) ,这是个人计算机中常见的 Cpu 的内存页大小At most 12 (sector size of 4096 bytes), which is the memory page size of CPUs common in personal computers

3.1.15 SectorsPerClusterShift 字段3.1.15 SectorsPerClusterShift Field

SectorsPerClusterShift 字段应描述以日志2 (N) 表示的每个分类的扇区,其中 N 是每个群集的扇区数。The SectorsPerClusterShift field shall describe the sectors per cluster expressed as log2(N), where N is number of sectors per cluster. 例如,对于每个群集8个扇区,此字段的值为3。For example, for 8 sectors per cluster, the value of this field is 3.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少每个群集有0个 (1 个扇区) ,这是可能的最小群集At least 0 (1 sector per cluster), which is the smallest cluster possible

  • 最多 25-BytesPerSectorShift,计算结果为32MB 的群集大小At most 25 - BytesPerSectorShift, which evaluates to a cluster size of 32MB

3.1.16 NumberOfFats 字段3.1.16 NumberOfFats Field

NumberOfFats 字段应描述卷包含的 FATs 和分配位图的数目。The NumberOfFats field shall describe the number of FATs and Allocation Bitmaps the volume contains.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 1,指示卷只包含第一个 FAT 和第一个分配位图1, which indicates the volume only contains the First FAT and First Allocation Bitmap

  • 2,指示卷包含第一个 FAT、第二个 FAT、第一个分配位图和第二个分配位图;此值仅对 TexFAT 卷有效2, which indicates the volume contains the First FAT, Second FAT, First Allocation Bitmap, and Second Allocation Bitmap; this value is only valid for TexFAT volumes

3.1.17 DriveSelect 字段3.1.17 DriveSelect Field

DriveSelect 字段应包含扩展的 INT 13h 驱动器号,这可帮助你在个人计算机上使用扩展的 INT 13h 从该卷启动 strapping。The DriveSelect field shall contain the extended INT 13h drive number, which aids boot-strapping from this volume using extended INT 13h on personal computers.

此字段的所有可能值都有效。All possible values for this field are valid. 以前的基于 FAT 的文件系统中的类似字段经常包含值80h。Similar fields in previous FAT-based file systems frequently contained the value 80h.

3.1.18 PercentInUse 字段3.1.18 PercentInUse Field

PercentInUse 字段应描述群集堆中分配的分类百分比。The PercentInUse field shall describe the percentage of clusters in the Cluster Heap which are allocated.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 介于0和100(含),这是群集堆中分配的群集的百分比,舍入到最接近的整数Between 0 and 100 inclusively, which is the percentage of allocated clusters in the Cluster Heap, rounded down to the nearest integer

  • 确切的 FFh,表示群集堆中分配的群集的百分比不可用Exactly FFh, which indicates the percentage of allocated clusters in the Cluster Heap is not available

实现应更改此字段的值,以反映在群集堆中分配群集的更改,或将其更改为 FFh。Implementations shall change the value of this field to reflect changes in the allocation of clusters in the Cluster Heap or shall change it to FFh.

在计算各自的主要启动或备份启动区域校验和时,实现不应包括此字段。Implementations shall not include this field when computing its respective Main Boot or Backup Boot region checksum. 当引用备份引导扇区时,实现应将此字段视为过时。When referring to the Backup Boot Sector, implementations shall treat this field as stale.

3.1.19 启动代码字段3.1.19 BootCode Field

"启动代码" 字段应包含 strapping 指令。The BootCode field shall contain boot-strapping instructions. 实现可以使用 strapping 计算机系统启动所需的 CPU 指令来填充此字段。Implementations may populate this field with the CPU instructions necessary for boot-strapping a computer system. 不提供 strapping 指令的实现应将此字段中的每个字节初始化为 F4h (在个人计算机中常见的 Cpu 的停止指令,) 作为其格式操作的一部分。Implementations which don't provide boot-strapping instructions shall initialize each byte in this field to F4h (the halt instruction for CPUs common in personal computers) as part of their format operation.

3.1.20 BootSignature 字段3.1.20 BootSignature Field

BootSignature 字段应说明给定扇区的目的是否适用于它是启动扇区。The BootSignature field shall describe whether the intent of a given sector is for it to be a Boot Sector or not.

此字段的有效值为 AA55h。The valid value for this field is AA55h. 此字段中的任何其他值将会使其各自的引导扇区失效。Any other value in this field invalidates its respective Boot Sector. 在此之前,实现应验证此字段的内容,具体取决于其各自引导扇区中的任何其他字段。Implementations should verify the contents of this field prior to depending on any other field in its respective Boot Sector.

3.2 主和备份扩展引导扇区子区域3.2 Main and Backup Extended Boot Sectors Sub-regions

主扩展引导扇区的每个扇区具有相同的结构;但是,每个扇区可以保存不同的 strapping 指令 (参阅表 6) 。Each sector of the Main Extended Boot Sectors has the same structure; however, each sector may hold distinct boot-strapping instructions (see Table 6). Strapping 代理,如主引导扇区中的 strapping 指令、备用 BIOS 实现或嵌入式系统的固件,可以加载这些扇区并执行它们所包含的指令。Boot-strapping agents, such as the boot-strapping instructions in the Main Boot Sector, alternate BIOS implementations, or an embedded system's firmware, may load these sectors and execute the instructions they contain.

备份扩展引导扇区是主扩展引导扇区的备份,具有相同的结构 (参阅 表 6) 。The Backup Extended Boot Sectors is a backup of the Main Extended Boot Sectors and has the same structure (see Table 6).

在执行主或备用扩展引导扇区的指令之前,实现应通过确保每个扇区的 ExtendedBootSignature 字段包含其规定值来验证其内容。Prior to executing the instructions of either the Main or Backup Extended Boot Sectors, implementations should verify their contents by ensuring each sector's ExtendedBootSignature field contains its prescribed value.

虽然初始格式操作将初始化主和备用扩展启动扇区的内容,但实现可能会更新这些扇区 (并且还应根据需要更新各自的启动校验和) 。While the initial format operation will initialize the contents of both the Main and Backup Extended Boot Sectors, implementations may update these sectors (and shall also update their respective Boot Checksum) as needed.

表6扩展引导扇区结构Table 6 Extended Boot Sector Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
ExtendedBootCodeExtendedBootCode 00 2BytesPerSectorShift –42BytesPerSectorShift – 4

此字段是必需的,并且 节 3.2.1 定义其内容。This field is mandatory and Section 3.2.1 defines its contents.

注意:主和备份引导扇区都包含 BytesPerSectorShift 字段。Note: the Main and Backup Boot Sectors both contain the BytesPerSectorShift field.

ExtendedBootSignatureExtendedBootSignature 2BytesPerSectorShift –42BytesPerSectorShift – 4 44

此字段是必需的,并且 节 3.2.2 定义其内容。This field is mandatory and Section 3.2.2 defines its contents.

注意:主和备份引导扇区都包含 BytesPerSectorShift 字段。Note: the Main and Backup Boot Sectors both contain the BytesPerSectorShift field.

3.2.1 ExtendedBootCode 字段3.2.1 ExtendedBootCode Field

ExtendedBootCode 字段应包含 strapping 指令。The ExtendedBootCode field shall contain boot-strapping instructions. 实现可以使用 strapping 计算机系统启动所需的 CPU 指令来填充此字段。Implementations may populate this field with the CPU instructions necessary for boot-strapping a computer system. 不提供 strapping 指令的实现应将此字段中的每个字节初始化为00h,作为其格式操作的一部分。Implementations which don't provide boot-strapping instructions shall initialize each byte in this field to 00h as part of their format operation.

3.2.2 ExtendedBootSignature 字段3.2.2 ExtendedBootSignature Field

ExtendedBootSignature 字段应说明给定扇区的目的是否适用于它是扩展的启动扇区。The ExtendedBootSignature field shall describe whether the intent of given sector is for it to be an Extended Boot Sector or not.

此字段的有效值为 AA550000h。The valid value for this field is AA550000h. 此字段中的任何其他值将会使其各自的主或备用扩展引导扇区失效。Any other value in this field invalidates its respective Main or Backup Extended Boot Sector. 在此之前,实现应验证此字段的内容,具体取决于其各自扩展引导扇区中的任何其他字段。Implementations should verify the contents of this field prior to depending on any other field in its respective Extended Boot Sector.

3.3 主和备份 OEM 参数子区域3.3 Main and Backup OEM Parameters Sub-regions

主要的 OEM 参数子区域包含十个参数结构,这些结构可能包含特定于制造商的信息 (参阅 表 7) 。The Main OEM Parameters sub-region contains ten parameters structures which may contain manufacturer-specific information (see Table 7). 其中每个参数结构均派生自泛型参数模板 (参阅 3.3.2) 部分Each of the ten parameters structures derives from the Generic Parameters template (see Section 3.3.2). 制造商可以从泛型参数模板派生自己的自定义参数结构。Manufacturers may derive their own custom parameters structures from the Generic Parameters template. 此规范本身定义了两个参数结构: Null 参数 (参阅 3.3.3) 和 Flash 参数 部分 (参阅 3.3.4) 部分This specification itself defines two parameters structures: Null Parameters (see Section 3.3.3) and Flash Parameters (see Section 3.3.4).

备份 OEM 参数是主 OEM 参数的备份,具有相同的结构 (参阅 表 7) 。The Backup OEM Parameters is a backup of the Main OEM Parameters and has the same structure (see Table 7).

在使用主 OEM 参数或备份 OEM 参数的内容之前,实现应通过验证它们各自的启动校验和来验证其内容。Prior to using the contents of either the Main or Backup OEM Parameters, implementations shall verify their contents by validating their respective Boot Checksum.

制造商应该用自己的自定义参数结构(如果有)以及任何其他参数结构来填充主 OEM 参数和备用 OEM 参数。Manufacturers should populate the Main and Backup OEM Parameters with their own custom parameters structures, if any, and any other parameter structures. 后续的格式操作应保留主要和备份 OEM 参数的内容。Subsequent format operations shall preserve the contents of the Main and Backup OEM Parameters.

实现可以根据需要更新主 OEM 参数和备份 OEM 参数 (并且还应更新各自的启动校验和) 。Implementations may update the Main and Backup OEM Parameters as needed (and shall also update their respective Boot Checksum).

表 7 OEM 参数结构Table 7 OEM Parameters Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
参数 [0]Parameters[0] 00 4848 此字段是必需的,并且 节 3.3.1 定义其内容。This field is mandatory and Section 3.3.1 defines its contents.

..

..

..

..

..

..

..

..

..

..

..

..

参数 [9]Parameters[9] 432432 4848 此字段是必需的,并且 节 3.3.1 定义其内容。This field is mandatory and Section 3.3.1 defines its contents.
保留Reserved 480480 2BytesPerSectorShift –4802BytesPerSectorShift – 480

此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.

注意:主和备份引导扇区都包含 BytesPerSectorShift 字段。Note: the Main and Backup Boot Sectors both contain the BytesPerSectorShift field.

3.3.1 参数 [ 0 ] .。。参数 [ 9]3.3.1 Parameters[0] ... Parameters[9]

此数组中的每个参数字段都包含一个派生自泛型参数模板的参数结构 (参阅 3.3.2) 部分Each Parameters field in this array contains a parameters structure, which derives from the Generic Parameters template (see Section 3.3.2). 任何未使用的参数字段都应描述为包含空参数结构 (参阅 3.3.3) 部分Any unused Parameters field shall be described as containing a Null Parameters structure (see Section 3.3.3).

3.3.2 泛型参数模板3.3.2 Generic Parameters Template

泛型参数模板提供参数结构的基本定义 (参阅 表 8) 。The Generic Parameters template provides the base definition of a parameters structure (see Table 8). 所有参数结构都从此模板派生。All parameters structures derive from this template. 对此泛型参数模板的支持是必需的。Support for this Generic Parameters template is mandatory.

表8泛型参数模板Table 8 Generic Parameters Template

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
ParametersGuidParametersGuid 00 1616 此字段是必需的,并且 节 3.3.2.1 定义其内容。This field is mandatory and Section 3.3.2.1 defines its contents.
CustomDefinedCustomDefined 1616 3232 此字段是必需的,从此模板派生的结构将定义其内容。This field is mandatory and the structures which derive from this template define its contents.
3.3.2.1 ParametersGuid 字段3.3.2.1 ParametersGuid Field

ParametersGuid 字段应介绍 GUID,它确定给定参数结构的其余部分的布局。The ParametersGuid field shall describe a GUID, which determines the layout of the remainder of the given parameters structure.

此字段的所有可能值都有效;但是,在从此模板派生自定义参数结构时,制造商应使用 GUID 生成工具(如 GuidGen.exe)来选择 GUID。All possible values for this field are valid; however, manufacturers should use a GUID-generating tool, such as GuidGen.exe, to select a GUID when deriving custom parameters structures from this template.

3.3.3 Null 参数3.3.3 Null Parameters

Null 参数结构派生自泛型参数模板 (参阅 3.3.2) 部分 ,并应介绍 (的参数字段,请参阅 表 9) 。The Null Parameters structure derives from the Generic Parameters template (see Section 3.3.2) and shall describe an unused Parameters field (see Table 9). 创建或更新 OEM 参数结构时,实现应使用 Null 参数结构填充未使用的参数字段。When creating or updating the OEM Parameters structure, implementations shall populate unused Parameters fields with the Null Parameters structure. 另外,在创建或更新 OEM 参数结构时,实现应在数组的末尾合并 Null 参数结构,从而在 OEM 参数结构的开头保留所有其他参数结构。Also, when creating or updating the OEM Parameters structure, implementations should consolidate Null Parameters structures at the end of the array, thereby leaving all other Parameters structures at the beginning of the OEM Parameters structure.

对 Null 参数结构的支持是必需的。Support for the Null Parameters structure is mandatory.

表 9 Null 参数结构Table 9 Null Parameters Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
ParametersGuidParametersGuid 00 1616 此字段是必需的,并且 节 3.3.3.1 定义其内容。This field is mandatory and Section 3.3.3.1 defines its contents.
保留Reserved 1616 3232 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
3.3.3.1 ParametersGuid 字段3.3.3.1 ParametersGuid Field

ParametersGuid 字段应符合泛型参数模板提供的定义 (请参阅 3.3.2.1) 部分The ParametersGuid field shall conform to the definition provided by the Generic Parameters template (see Section 3.3.2.1).

此字段的有效值(GUID 表示法)为 {00000000-0000-0000-0000-000000000000} 。The valid value for this field, in GUID notation, is {00000000-0000-0000-0000-000000000000}.

3.3.4 闪存参数3.3.4 Flash Parameters

闪光灯参数结构派生自泛型参数模板 (参阅 3.3.2) 部分 ,并包含闪存媒体 (的参数,请参阅 表 10) 。The Flash Parameter structure derives from the Generic Parameters template (see Section 3.3.2) and contains parameters for flash media (see Table 10). 基于闪存的存储设备制造商可能会填充参数字段, (最好 [ ] 使用此参数结构) 参数0字段。Manufacturers of flash-based storage devices may populate a Parameters field (preferably the Parameters[0] field) with this parameters structure. 实现可能使用 Flash 参数结构中的信息来优化读取/写入过程中的访问操作,并将文件系统结构与媒体的 durning 格式进行对齐。Implementations may use the information in the Flash Parameters structure to optimize access operations during reads/writes and for alignment of file system structures durning formatting of the media.

支持闪存参数结构是可选的。Support for the Flash Parameters structure is optional.

表10闪存参数结构Table 10 Flash Parameters Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
ParametersGuidParametersGuid 00 1616 此字段是必需的,并且 节 3.3.4.1 定义其内容。This field is mandatory and Section 3.3.4.1 defines its contents.
EraseBlockSizeEraseBlockSize 1616 44 此字段是必需的,并且 节 3.3.4.2 定义其内容。This field is mandatory and Section 3.3.4.2 defines its contents.
PageSizePageSize 2020 44 此字段是必需的,并且 节 3.3.4.3 定义其内容。This field is mandatory and Section 3.3.4.3 defines its contents.
SpareSectorsSpareSectors 2424 44 此字段是必需的,并且 节 3.3.4.4 定义其内容。This field is mandatory and Section 3.3.4.4 defines its contents.
RandomAccessTimeRandomAccessTime 2828 44 此字段是必需的,并且 节 3.3.4.5 定义其内容。This field is mandatory and Section 3.3.4.5 defines its contents.
ProgrammingTimeProgrammingTime 3232 44 此字段是必需的,并且 节 3.3.4.6 定义其内容。This field is mandatory and Section 3.3.4.6 defines its contents.
ReadCycleReadCycle 3636 44 此字段是必需的,并且 节 3.3.4.7 定义其内容。This field is mandatory and Section 3.3.4.7 defines its contents.
WriteCycleWriteCycle 4040 44 此字段是必需的,并且 节 3.3.4.8 定义其内容。This field is mandatory and Section 3.3.4.8 defines its contents.
保留Reserved 4444 44 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.

所有闪存参数字段的所有可能值(ParametersGuid 字段除外)都是有效的。All possible values for all Flash Parameters fields, except for the ParametersGuid field, are valid. 但是,值0指示该字段实际上没有任何意义 (实现应忽略给定字段) 。However, the value 0 indicates the field is actually meaningless (implementations shall ignore the given field).

3.3.4.1 ParametersGuid 字段3.3.4.1 ParametersGuid Field

ParametersGuid 字段应符合泛型参数模板中提供的定义 (请参阅 3.3.2.1) 部分The ParametersGuid field shall conform to the definition provided in the Generic Parameters template (see Section 3.3.2.1).

此字段的有效值,采用 GUID 表示法,为 {0A0C7E46-3399-4021-90C8-FA6D389C4BA2}。The valid value for this field, in GUID notation, is {0A0C7E46-3399-4021-90C8-FA6D389C4BA2}.

3.3.4.2 EraseBlockSize 字段3.3.4.2 EraseBlockSize Field

EraseBlockSize 字段应描述闪存媒体擦除块的大小(以字节为单位)。The EraseBlockSize field shall describe the size, in bytes, of the flash media's erase block.

3.3.4.3 PageSize 字段3.3.4.3 PageSize Field

"PageSize" 字段应描述 flash 媒体页面的大小(以字节为单位)。The PageSize field shall describe the size, in bytes of the flash media's page.

3.3.4.4 SpareSectors 字段3.3.4.4 SpareSectors Field

SpareSectors 字段应描述闪存介质可用于其内部备用操作的扇区数。The SpareSectors field shall describe the number of sectors the flash media has available for its internal sparing operations.

3.3.4.5 RandomAccessTime 字段3.3.4.5 RandomAccessTime Field

RandomAccessTime 字段应以纳秒为单位描述闪存媒体的平均随机访问时间。The RandomAccessTime field shall describe the flash media's average random access time, in nanoseconds.

3.3.4.6 ProgrammingTime 字段3.3.4.6 ProgrammingTime Field

ProgrammingTime 字段应以纳秒为单位描述闪存介质的平均编程时间。The ProgrammingTime field shall describe the flash media's average programming time, in nanoseconds.

3.3.4.7 ReadCycle 字段3.3.4.7 ReadCycle Field

"ReadCycle" 字段应描述 flash 媒体的平均读取周期时间(以纳秒为单位)。The ReadCycle field shall describe the flash media's average read cycle time, in nanoseconds.

3.3.4.8 WriteCycle 字段3.3.4.8 WriteCycle Field

WriteCycle 字段应描述平均写入周期时间(以纳秒为单位)。The WriteCycle field shall describe the average write cycle time, in nanoseconds.

3.4 主和备份引导校验和子区域3.4 Main and Backup Boot Checksum Sub-regions

主和备份引导校验和每个校验和都包含其各自引导区域中所有其他子区域的内容的四字节校验和的重复模式。The Main and Backup Boot Checksums each contain a repeating pattern of the four-byte checksum of the contents of all other sub-regions in their respective Boot regions. 校验和计算不应在其各自的引导扇区中包含 VolumeFlags 和 PercentInUse 字段 (参阅 图 1) 。The checksum calculation shall not include the VolumeFlags and PercentInUse fields in their respective Boot Sector (see Figure 1). 四字节校验和的重复模式将填充其各自的引导校验和子区域,从子区域的开头开始。The repeating pattern of the four-byte checksum fills its respective Boot Checksum sub-region from the beginning to the end of the sub-region.

在主或备份引导区域中使用任何其他子区域的内容之前,实现应通过验证其各自的启动校验和来验证其内容。Prior to using the contents of any of the other sub-regions in either the Main or Backup Boot regions, implementations shall verify their contents by validating their respective Boot Checksum.

虽然初始格式操作将同时用重复校验和模式填充主和备份的校验和,则实现应将这些扇区更新为其相应启动区域中其他扇区的内容。While the initial format operation will populate both the Main and Backup Boot Checksums with the repeating checksum pattern, implementations shall update these sectors as the contents of the other sectors in their respective Boot regions change.

图1启动校验和计算Figure 1 Boot Checksum Computation

UInt32 BootChecksum
(
    UCHAR  * Sectors,        // points to an in-memory copy of the 11 sectors
    USHORT   BytesPerSector
)
{
    UInt32 NumberOfBytes = (UInt32)BytesPerSector * 11;
    UInt32 Checksum = 0;
    UInt32 Index;

    for (Index = 0; Index < NumberOfBytes; Index++)
    {
        if ((Index == 106) || (Index == 107) || (Index == 112))
        {
            continue;
        }
        Checksum = ((Checksum&1) ? 0x80000000 : 0) + (Checksum>>1) + (UInt32)Sectors[Index];
    }

    return Checksum;
}

4文件分配表区域4 File Allocation Table Region

文件分配表 (FAT) 区域最多可以包含两个 FATs,一个位于第一个 FAT 子区域,另一个在第二个 FAT 子区域。The File Allocation Table (FAT) region may contain up to two FATs, one in the First FAT sub-region and another in the Second FAT sub-region. "NumberOfFats" 字段描述此区域包含的 FATs 数量。The NumberOfFats field describes how many FATs this region contains. NumberOfFats 字段的有效值为1和2。The valid values for the NumberOfFats field are 1 and 2. 因此,第一个 FAT 子区域始终包含 FAT。Therefore, the First FAT sub-region always contains a FAT. 如果 NumberOfFats 字段为2,则第二个 FAT 子区域也包含 FAT。If the NumberOfFats field is two, then the Second FAT sub-region also contains a FAT.

"VolumeFlags" 字段的 "ActiveFat" 字段描述哪个 FAT 处于活动状态。The ActiveFat field of the VolumeFlags field describes which FAT is active. 只有主引导扇区中的 VolumeFlags 字段是最新的。Only the VolumeFlags field in the Main Boot Sector is current. 实现应将不活动的 FAT 视为过时。Implementations shall treat the FAT which is not active as stale. 使用非活动 FAT 并在 FATs 之间切换是特定于实现的。Use of the inactive FAT and switching between FATs is implementation specific.

4.1 第一个和第二个 FAT 子区域4.1 First and Second FAT Sub-regions

FAT 应描述群集堆中的群集链 (参阅 表 11) 。A FAT shall describe cluster chains in the Cluster Heap (see Table 11). 群集链是一系列的群集,用于为记录文件、目录和其他文件系统结构的内容提供空间。A cluster chain is a series of clusters which provides space for recording the contents of files, directories, and other file system structures. FAT 表示群集链作为群集索引的单独链接列表。A FAT represents a cluster chain as a singly-linked list of cluster indices. 除了前两项以外,FAT 中的每个条目都只表示一个分类。With the exception of the first two entries, every entry in a FAT represents exactly one cluster.

表11文件分配表结构Table 11 File Allocation Table Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(字节) (bytes)

注释Comments
FatEntry [0]FatEntry[0] 00 44 此字段是必需的, 第4.1.2 节 定义其内容。This field is mandatory and Section 4.1.2 defines its contents.
FatEntry [1]FatEntry[1] 44 44 此字段是必需的, 第4.1.2 节 定义其内容。This field is mandatory and Section 4.1.2 defines its contents.
FatEntry [2]FatEntry[2] 88 44 此字段是必需的,并且 节 4.1.3 定义其内容。This field is mandatory and Section 4.1.3 defines its contents.

..

..

..

..

..

..

..

..

..

..

..

..

FatEntry [ClusterCount + 1]FatEntry[ClusterCount+1] (ClusterCount + 1)\ * 4(ClusterCount + 1) \* 4 44

此字段是必需的,并且 节 4.1.3 定义其内容。This field is mandatory and Section 4.1.3 defines its contents.

ClusterCount + 1 永远不能超过 FFFFFFF6h。ClusterCount + 1 can never exceed FFFFFFF6h.

注意:主和备份引导扇区都包含 ClusterCount 字段。Note: the Main and Backup Boot Sectors both contain the ClusterCount field.

ExcessSpaceExcessSpace (ClusterCount + 2)\ * 4(ClusterCount + 2) \* 4 (FatLength\ * 2BytesPerSectorShift) – ( (ClusterCount + 2)\ * 4) (FatLength \* 2BytesPerSectorShift) – ((ClusterCount + 2) \* 4)

此字段是必需的,其内容(如果有)未定义。This field is mandatory and its contents, if any, are undefined.

注意:主和备份引导扇区都包含 ClusterCount、FatLength 和 BytesPerSectorShift 字段。Note: the Main and Backup Boot Sectors both contain the ClusterCount, FatLength, and BytesPerSectorShift fields.

4.1.1 FatEntry [ 0 ] 字段4.1.1 FatEntry[0] Field

FatEntry [ 0 ] 字段应描述第一个字节中的媒体类型 (最低序位字节) ,并应在其余三个字节内包含 FFh。The FatEntry[0] field shall describe the media type in the first byte (the lowest order byte) and shall contain FFh in the remaining three bytes.

第一个字节) (媒体类型应为 F8h。The media type (the first byte) should be F8h.

4.1.2 FatEntry [ 1 ] 字段4.1.2 FatEntry[1] Field

[ ] 由于历史优先级,FatEntry 1 字段仅存在,并不描述感兴趣的任何内容。The FatEntry[1] field only exists due to historical precedence and does not describe anything of interest.

此字段的有效值为 FFFFFFFFh。The valid value for this field is FFFFFFFFh. 实现应将此字段初始化为其规定值,不应将此字段用于任何目的。Implementations shall initialize this field to its prescribed value and should not use this field for any purpose. 实现不应解释此字段,并且应跨修改周围字段的操作保留其内容。Implementations should not interpret this field and shall preserve its contents across operations which modify surrounding fields.

4.1.3 FatEntry [ 2 ] .。。FatEntry [ ClusterCount + 1 个 ] 字段4.1.3 FatEntry[2] ... FatEntry[ClusterCount+1] Fields

此数组中的每个 FatEntry 字段应表示群集堆中的群集。Each FatEntry field in this array shall represent a cluster in the Cluster Heap. FatEntry [ 2 ] 表示群集堆中的第一个群集,FatEntry [ ClusterCount + 1 ] 表示群集堆中的最后一个群集。FatEntry[2] represents the first cluster in the Cluster Heap and FatEntry[ClusterCount+1] represents the last cluster in the Cluster Heap.

这些字段的有效值范围应为:The valid range of values for these fields shall be:

  • 介于2和 ClusterCount + 1 之间,它们指向给定群集链中的下一个 FatEntry;给定的 FatEntry 不应指向其前面给定群集链中的任何 FatEntryBetween 2 and ClusterCount + 1, inclusively, which points to the next FatEntry in the given cluster chain; the given FatEntry shall not point to any FatEntry which precedes it in the given cluster chain

  • 确切 FFFFFFF7h,它将给定 FatEntry 的相应群集标记为 "错误"Exactly FFFFFFF7h, which marks the given FatEntry's corresponding cluster as "bad"

  • 确切地说,FFFFFFFFh 将给定 FatEntry 的相应群集标记为群集链的最后一个群集;这是任何给定群集链的最后 FatEntry 的唯一有效值Exactly FFFFFFFFh, which marks the given FatEntry's corresponding cluster as the last cluster of a cluster chain; this is the only valid value for the last FatEntry of any given cluster chain

5个数据区域5 Data Region

数据区域包含群集堆,这为文件系统结构、目录和文件提供了管理空间。The Data region contains the Cluster Heap, which provides managed space for file system structures, directories, and files.

5.1 群集堆子区域5.1 Cluster Heap Sub-region

群集堆的结构非常简单 (参阅 表 12) ;每个连续的扇区描述一个分类,SectorsPerClusterShift 字段定义。The Cluster Heap's structure is very simple (see Table 12); each consecutive series of sectors describes one cluster, as the SectorsPerClusterShift field defines. 重要的是,群集堆的第一个群集的索引为2,直接对应于 FatEntry 2 的 [ 索引 ] 。Importantly, the first cluster of the Cluster Heap has index two, which directly corresponds to the index of FatEntry[2].

在 exFAT 卷中 (,请参阅 7.1.5 部分 中的 ") ",维护所有分类的分配状态记录。In an exFAT volume, an Allocation Bitmap (see Section 7.1.5) maintains the record of the allocation state of all clusters. 这与 exFAT 的前置任务 (FAT12、FAT16 和 FAT32) 明显不同,其中,FAT 维护群集堆中所有群集的分配状态记录。This is a significant difference from exFAT's predecessors (FAT12, FAT16, and FAT32), in which a FAT maintained a record of the allocation state of all clusters in the Cluster Heap.

表12群集堆结构Table 12 Cluster Heap Structure

字段名称Field Name

OffsetOffset

(扇区) (sector)

大小Size

(扇区) (sectors)

注释Comments
群集 [2]Cluster[2] ClusterHeapOffsetClusterHeapOffset 2SectorsPerClusterShift2SectorsPerClusterShift

此字段是必需的, 第5.1.1 部分 定义其内容。This field is mandatory and Section 5.1.1 defines its contents.

注意:主和备份引导扇区都包含 ClusterHeapOffset 和 SectorsPerClusterShift 字段。Note: the Main and Backup Boot Sectors both contain the ClusterHeapOffset and SectorsPerClusterShift fields.

..

..

..

..

..

..

..

..

..

..

..

..

Cluster [ClusterCount + 1]Cluster[ClusterCount+1] ClusterHeapOffset + (ClusterCount – 1) \* 2SectorsPerClusterShiftClusterHeapOffset + (ClusterCount – 1) \* 2SectorsPerClusterShift 2SectorsPerClusterShift2SectorsPerClusterShift

此字段是必需的, 第5.1.1 部分 定义其内容。This field is mandatory and Section 5.1.1 defines its contents.

注意:主和备份引导扇区都包含 ClusterCount、ClusterHeapOffset 和 SectorsPerClusterShift 字段。Note: the Main and Backup Boot Sectors both contain the ClusterCount, ClusterHeapOffset, and SectorsPerClusterShift fields.

5.1.1 群集 [ 2 ] .。。Cluster [ ClusterCount + 1 个 ] 字段5.1.1 Cluster[2] ... Cluster[ClusterCount+1] Fields

此数组中的每个分类字段都是一系列连续扇区,它们的大小由 SectorsPerClusterShift 字段定义。Each Cluster field in this array is a series of contiguous sectors, whose size is defined by the SectorsPerClusterShift field.

6目录结构6 Directory Structure

ExFAT 文件系统使用目录树方法来管理群集堆中存在的文件系统结构和文件。The exFAT file system uses a directory tree approach to manage the file system structures and files which exist in the Cluster Heap. 目录与目录树中的父和子目录之间存在一对多关系。Directories have a one-to-many relationship between parent and child in the directory tree.

FirstClusterOfRootDirectory 字段引用的目录是目录树的根。The directory to which the FirstClusterOfRootDirectory field refers is the root of the directory tree. 所有其他目录都从根目录中以单独链接的方式进行。All other directories descend from the root directory in a singly-linked fashion.

每个目录都包含一系列目录项 (参见 表 13) 。Each directory consists of a series of directory entries (see Table 13).

一个或多个目录项合并到一个目录条目集中,其中描述了相关内容,例如文件系统结构、子目录或文件。One or more directory entries combine into a directory entry set which describes something of interest, such as a file system structure, sub-directory, or file.

表13目录结构Table 13 Directory Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(byte) (byte)

注释Comments
DirectoryEntry [0]DirectoryEntry[0] 00 3232 此字段是必填字段, 6.1 节 定义其内容。This field is mandatory and Section 6.1 defines its contents.

..

..

..

..

..

..

..

..

..

..

..

..

DirectoryEntry [N – 1]DirectoryEntry[N–1] (N – 1)\ * 32(N – 1) \* 32 3232

此字段是必填字段, 6.1 节 定义其内容。This field is mandatory and Section 6.1 defines its contents.

N (DirectoryEntry 字段的数目)是包含给定目录的群集链的大小(以字节为单位),除以 DirectoryEntry 字段大小32字节。N, the number of DirectoryEntry fields, is the size, in bytes, of the cluster chain which contains the given directory, divided by the size of a DirectoryEntry field, 32 bytes.

6.1 DirectoryEntry [ 0 ] .。。DirectoryEntry [ N--1]6.1 DirectoryEntry[0] ... DirectoryEntry[N--1]

此数组中的每个 DirectoryEntry 字段均派生自泛型 DirectoryEntry 模板 (参见 6.2) 部分Each DirectoryEntry field in this array derives from the Generic DirectoryEntry template (see Section 6.2).

6.2 泛型 DirectoryEntry 模板6.2 Generic DirectoryEntry Template

一般 DirectoryEntry 模板提供目录条目的基本定义 (参阅 表 14) 。The Generic DirectoryEntry template provides the base definition for directory entries (see Table 14). 所有目录条目结构都派生自此模板,只有 Microsoft 定义的目录条目结构有效 (exFAT 没有规定制造商定义的目录条目结构,除非在 7.8 节7.9) 部分 定义。All directory entry structures derive from this template and only Microsoft-defined directory entry structures are valid (exFAT does not have provisions for manufacturer-defined directory entry structures except as defined in Section 7.8 and Section 7.9). 解释泛型 DirectoryEntry 模板的功能是必需的。The ability to interpret the Generic DirectoryEntry template is mandatory.

表14泛型 DirectoryEntry 模板Table 14 Generic DirectoryEntry Template

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(byte) (byte)

注释Comments
EntryTypeEntryType 00 11 此字段是必需的,并且 节 6.2.1 定义其内容。This field is mandatory and Section 6.2.1 defines its contents.
CustomDefinedCustomDefined 11 1919 此字段是必需的,从此模板派生的结构可以定义其内容。This field is mandatory and structures which derive from this template may define its contents.
FirstClusterFirstCluster 2020 44 此字段是必需的,并且 节 6.2.2 定义其内容。This field is mandatory and Section 6.2.2 defines its contents.
DataLengthDataLength 2424 88 此字段是必需的,并且 节 6.2.3 定义其内容。This field is mandatory and Section 6.2.3 defines its contents.

6.2.1 EntryType 字段6.2.1 EntryType Field

"EntryType" 字段具有三种使用量模式,该字段的值定义 (请参阅下面的列表) 。The EntryType field has three modes of usage which the value of the field defines (see list below).

  • 00h,这是目录结尾标记,以下条件适用:00h, which is an end-of-directory marker and the following conditions apply:

    • 给定 DirectoryEntry 中的所有其他字段实际上已保留All other fields in the given DirectoryEntry are actually reserved

    • 给定目录中的所有后续目录项也是目录结尾标记All subsequent directory entries in the given directory also are end-of-directory markers

    • 目录结尾标记仅在目录项集外部有效End-of-directory markers are only valid outside directory entry sets

    • 实现可能会根据需要覆盖目录结尾标记Implementations may overwrite end-of-directory markers as necessary

  • 在01h 和7Fh (即,不使用的目录条目标记)之间,以下条件适用:Between 01h and 7Fh inclusively, which is an unused-directory-entry marker and the following conditions apply:

    • 给定 DirectoryEntry 中的所有其他字段实际上是未定义的All other fields in the given DirectoryEntry are actually undefined

    • 未使用的目录项仅在目录项集外部有效Unused directory entries are only valid outside of directory entry sets

    • 实现可能会根据需要覆盖未使用的目录条目Implementations may overwrite unused directory entries as necessary

    • 此范围的值对应于正在使用字段 (参阅包含值0的 6.2.1.4 部分) This range of values corresponds to the InUse field (see Section 6.2.1.4) containing the value 0

  • 在81h 和 FFh ()之间,这是一个常规目录条目,并且以下条件适用:Between 81h and FFh inclusively, which is a regular directory entry and the following conditions apply:

    • EntryType 字段的内容 (参阅 表 15) 确定 DirectoryEntry 结构的其余部分的布局The contents of the EntryType field (see Table 15) determine the layout of the remainder of the DirectoryEntry structure

    • 此值的范围以及仅此范围的值在目录项集内有效This range of values, and only this range of values, are valid inside a directory entry set

    • 此范围的值直接对应于正在使用字段 (参阅包含值 1) 部分的 6.2.1.4This range of values directly corresponds to the InUse field (see Section 6.2.1.4) containing the value 1

若要防止对正在使用字段的修改 (参阅) 6.2.1.4 部分 导致目录结束标记错误,则值80h 无效。To prevent modifications to the InUse field (see Section 6.2.1.4) erroneously resulting in an end-of-directory marker, the value 80h is invalid.

表15泛型 EntryType 字段结构Table 15 Generic EntryType Field Structure

字段名称Field Name

OffsetOffset

(位) (bit)

大小Size

(位) (bits)

注释Comments
TypeCodeTypeCode 00 55 此字段是必需的,并且 节 6.2.1.1 定义其内容。This field is mandatory and Section 6.2.1.1 defines its contents.
TypeImportanceTypeImportance 55 11 此字段是必需的,并且节 部分 6.2.1.2 定义其内容。This field is mandatory and Section Section 6.2.1.2 defines its contents.
TypeCategoryTypeCategory 66 11 此字段是必需的,并且 节 6.2.1.3 定义其内容。This field is mandatory and Section 6.2.1.3 defines its contents.
InUseInUse 77 11 此字段是必需的,并且 节 6.2.1.4 定义其内容。This field is mandatory and Section 6.2.1.4 defines its contents.
6.2.1.1 TypeCode 字段6.2.1.1 TypeCode Field

TypeCode 字段部分描述给定目录项的特定类型。The TypeCode field partially describes the specific type of the given directory entry. 此字段加上 "TypeImportance" 和 "TypeCategory" 字段 (参阅 6.2.1.26.2.1.3 节部分,分别用于唯一标识给定目录条目的类型) 。This field, plus the TypeImportance and TypeCategory fields (see Section 6.2.1.2 and Section 6.2.1.3, respectively) uniquely identify the type of the given directory entry.

此字段的所有可能值都有效,除非 TypeImportance 和 TypeCategory 字段都包含值 0;在这种情况下,值0对此字段无效。All possible values of this field are valid, unless the TypeImportance and TypeCategory fields both contain the value 0; in that case, the value 0 is invalid for this field.

6.2.1.2 TypeImportance 字段6.2.1.2 TypeImportance Field

TypeImportance 字段应描述给定目录条目的重要性。The TypeImportance field shall describe the importance of the given directory entry.

此字段的有效值应为:The valid values for this field shall be:

  • 0(表示给定目录条目是关键的 (参阅 6.3.1.2.1section 6.4.1.2.1 部分,分别用于关键的主要和关键辅助目录条目) 0, which means the given directory entry is critical (see Section 6.3.1.2.1 and Section 6.4.1.2.1 for critical primary and critical secondary directory entries, respectively)

  • 1,表示给定目录条目为良性 (请分别参阅 6.3.1.2.26.4.1.2.2 for 良性 primary and 良性辅助目录条目) 1, which means the given directory entry is benign (see Section 6.3.1.2.2 and Section 6.4.1.2.2 for benign primary and benign secondary directory entries, respectively)

6.2.1.3 TypeCategory 字段6.2.1.3 TypeCategory Field

TypeCategory 字段应描述给定目录条目的类别。The TypeCategory field shall describe the category of the given directory entry.

此字段的有效值应为:The valid values for this field shall be:

  • 0,表示给定目录条目为主 (参阅 6.3 节) 0, which means the given directory entry is primary (see Section 6.3)

  • 1,表示给定目录条目为辅助 (参阅 6.4 节) 1, which means the given directory entry is secondary (see Section 6.4)

6.2.1.4 正在使用字段6.2.1.4 InUse Field

正在使用字段应说明给定的目录条目是否正在使用。The InUse field shall describe whether the given directory entry in use or not.

此字段的有效值应为:The valid values for this field shall be:

  • 0,表示不使用给定的目录条目;这意味着,给定的结构实际上是未使用的目录条目0, which means the given directory entry is not in use; this means the given structure actually is an unused directory entry

  • 1,表示给定目录项正在使用中;这意味着给定的结构是一个常规目录条目1, which means the given directory entry is in use; this means the given structure is a regular directory entry

6.2.2 FirstCluster 字段6.2.2 FirstCluster Field

FirstCluster 字段应包含与给定目录条目关联的群集堆中分配的第一个群集的索引。The FirstCluster field shall contain the index of the first cluster of an allocation in the Cluster Heap associated with the given directory entry.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 正好为0,这意味着不存在群集分配Exactly 0, which means no cluster allocation exists

  • 介于2和 ClusterCount + 1 之间,这是有效群集索引的范围Between 2 and ClusterCount + 1, which is the range of valid cluster indices

如果群集分配与导数结构不兼容,则从此模板派生的结构可以重新定义 FirstCluster 和 DataLength 字段。Structures which derive from this template may redefine both the FirstCluster and DataLength fields, if a cluster allocation is not compatible with the derivative structure.

6.2.3 DataLength 字段6.2.3 DataLength Field

DataLength 字段描述关联的群集分配包含的数据的大小(以字节为单位)。The DataLength field describes the size, in bytes, of the data the associated cluster allocation contains.

此字段的有效值范围为:The valid range of value for this field is:

  • 至少为 0;如果 FirstCluster 字段包含值0,则此字段的唯一有效值为0At least 0; if the FirstCluster field contains the value 0, then this field's only valid value is 0

  • 最多 ClusterCount * 2SectorsPerClusterShift * 2BytesPerSectorShiftAt most ClusterCount * 2SectorsPerClusterShift* 2BytesPerSectorShift

如果不能对派生结构进行群集分配,则从此模板派生的结构可以重新定义 FirstCluster 和 DataLength 字段。Structures which derive from this template may redefine both the FirstCluster and DataLength fields, if a cluster allocation is not possible for the derivative structure.

6.3 一般主 DirectoryEntry 模板6.3 Generic Primary DirectoryEntry Template

目录条目集中的第一个目录条目应该是主目录条目。The first directory entry in a directory entry set shall be a primary directory entry. 目录条目集中的所有后续目录条目(如果有)应为辅助目录条目 (参见 6.4) 部分All subsequent directory entries, if any, in the directory entry set shall be secondary directory entries (see Section 6.4).

解释一般的主要 DirectoryEntry 模板的功能是必需的。The ability to interpret the Generic Primary DirectoryEntry template is mandatory.

所有主目录条目结构均派生自一般的主项 DirectoryEntry 模板 (参阅) 派生自泛型 DirectoryEntry 模板的 表 16 (参见 6.2) 部分All primary directory entry structures derive from the Generic Primary DirectoryEntry template (see Table 16), which derives from the Generic DirectoryEntry template (see Section 6.2).

表16一般主 DirectoryEntry 模板Table 16 Generic Primary DirectoryEntry Template

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(byte) (byte)

注释Comments
EntryTypeEntryType 00 11 此字段是必需的,并且 节 6.3.1 定义其内容。This field is mandatory and Section 6.3.1 defines its contents.
SecondaryCountSecondaryCount 11 11 此字段是必需的,并且 节 6.3.2 定义其内容。This field is mandatory and Section 6.3.2 defines its contents.
SetChecksumSetChecksum 22 22 此字段是必需的,并且 节 6.3.3 定义其内容。This field is mandatory and Section 6.3.3 defines its contents.
GeneralPrimaryFlagsGeneralPrimaryFlags 44 22 此字段是必需的,并且 节 6.3.4 定义其内容。This field is mandatory and Section 6.3.4 defines its contents.
CustomDefinedCustomDefined 66 1414 此字段是必需的,并且从此模板派生的结构定义其内容。This field is mandatory and structures which derive from this template define its contents.
FirstClusterFirstCluster 2020 44 此字段是必需的,并且 节 6.3.5 定义其内容。This field is mandatory and Section 6.3.5 defines its contents.
DataLengthDataLength 2424 88 此字段是必需的,并且 节 6.3.6 定义其内容。This field is mandatory and Section 6.3.6 defines its contents.

6.3.1 EntryType 字段6.3.1 EntryType Field

EntryType 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1) 部分The EntryType field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1).

6.3.1.1 TypeCode 字段6.3.1.1 TypeCode Field

TypeCode 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.1) 部分The TypeCode field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.1).

6.3.1.2 TypeImportance 字段6.3.1.2 TypeImportance Field

TypeImportance 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.2) 部分The TypeImportance field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.2).

6.3.1.2.1 严重主目录条目6.3.1.2.1 Critical Primary Directory Entries

关键主目录项包含对正确管理 exFAT 卷至关重要的信息。Critical primary directory entries contain information which is critical to the proper management of an exFAT volume. 只有根目录包含关键主目录条目 (文件目录条目是一个例外,请参阅 7.4 节) 部分Only the root directory contains critical primary directory entries (File directory entries are an exception, see Section 7.4).

关键主目录项的定义与主 exFAT 修订号关联。The definition of critical primary directory entries correlates to the major exFAT revision number. 实现应支持所有关键的主目录条目,并且应仅记录此规范定义的关键主目录条目结构。Implementations shall support all critical primary directory entries and shall only record the critical primary directory entry structures this specification defines.

6.3.1.2.2 良性主目录条目6.3.1.2.2 Benign Primary Directory Entries

良性主目录条目包含可用于管理 exFAT 卷的其他信息。Benign primary directory entries contain additional information which may be useful for managing an exFAT volume. 任何目录都可能包含良性主目录条目。Any directory may contain benign primary directory entries.

良性主目录条目的定义与次要 exFAT 修订号关联。The definition of benign primary directory entries correlates to the minor exFAT revision number. 支持任何良性主目录条目此规范或任何后续规范定义是可选的。Support for any benign primary directory entry this specification, or any subsequent specification, defines is optional. 无法识别的良性主目录条目会将整个目录条目集呈现为不可识别的 (,但不能) 的定义。An unrecognized benign primary directory entry renders the entire directory entry set as unrecognized (beyond the definition of the applicable directory entry templates).

6.3.1.3 TypeCategory 字段6.3.1.3 TypeCategory Field

TypeCategory 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.3) 部分The TypeCategory field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.3).

对于此模板,此字段的有效值应为0。For this template, the valid value for this field shall be 0.

6.3.1.4 正在使用字段6.3.1.4 InUse Field

正在使用字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.4) 部分The InUse field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.4).

6.3.2 SecondaryCount 字段6.3.2 SecondaryCount Field

SecondaryCount 字段应描述紧跟在给定主目录条目后面的辅助目录条目数。The SecondaryCount field shall describe the number of secondary directory entries which immediately follow the given primary directory entry. 这些辅助目录条目连同给定的主目录条目组成目录条目集。These secondary directory entries, along with the given primary directory entry, comprise the directory entry set.

此字段的有效值范围应为:The valid range of values for this field shall be:

  • 至少为0,这意味着此主目录条目是目录条目集中的唯一条目At least 0, which means this primary directory entry is the only entry in the directory entry set

  • 最多255,这意味着下一个255目录条目和此主目录条目构成了目录条目集At most 255, which means the next 255 directory entries and this primary directory entry comprise the directory entry set

从此模板派生的关键主目录条目结构可以重新定义 SecondaryCount 和 SetChecksum 字段。Critical primary directory entry structures which derive from this template may redefine both the SecondaryCount and SetChecksum fields.

6.3.3 SetChecksum 字段6.3.3 SetChecksum Field

SetChecksum 字段应包含给定目录条目集中所有目录条目的校验和。The SetChecksum field shall contain the checksum of all directory entries in the given directory entry set. 但是,校验和不包括此字段 (参见 图 2) 。However, the checksum excludes this field (see Figure 2). 在使用给定目录条目集中的任何其他目录条目之前,实现应验证此字段的内容是否有效。Implementations shall verify the contents of this field are valid prior to using any other directory entry in the given directory entry set.

从此模板派生的关键主目录条目结构可以重新定义 SecondaryCount 和 SetChecksum 字段。Critical primary directory entry structures which derive from this template may redefine both the SecondaryCount and SetChecksum fields.

图 2 EntrySetChecksum 计算Figure 2 EntrySetChecksum Computation

UInt16 EntrySetChecksum
(
    UCHAR * Entries,       // points to an in-memory copy of the directory entry set
    UCHAR   SecondaryCount
)
{
    UInt16 NumberOfBytes = ((UInt16)SecondaryCount + 1) * 32;
    UInt16 Checksum = 0;
    UInt16 Index;

    for (Index = 0; Index < NumberOfBytes; Index++)
    {
        if ((Index == 2) || (Index == 3))
        {
            continue;
        }
        Checksum = ((Checksum&1) ? 0x8000 : 0) + (Checksum>>1) +  (UInt16)Entries[Index];
    }
    return Checksum;
}

6.3.4 GeneralPrimaryFlags 字段6.3.4 GeneralPrimaryFlags Field

GeneralPrimaryFlags 字段包含标志 (参阅 表 17) 。The GeneralPrimaryFlags field contains flags (see Table 17).

从此模板派生的关键主目录条目结构可以重新定义此字段。Critical primary directory entry structures which derive from this template may redefine this field.

表17泛型 GeneralPrimaryFlags 字段结构Table 17 Generic GeneralPrimaryFlags Field Structure

字段名称Field Name

OffsetOffset

(位) (bit)

大小Size

(位) (bits)

注释Comments
AllocationPossibleAllocationPossible 00 11 此字段是必需的,并且 节 6.3.4.1 定义其内容。This field is mandatory and Section 6.3.4.1 defines its contents.
NoFatChainNoFatChain 11 11 此字段是必需的,并且 节 6.3.4.2 定义其内容。This field is mandatory and Section 6.3.4.2 defines its contents.
CustomDefinedCustomDefined 22 1414 此字段是必需的,从此模板派生的结构可以定义此字段。This field is mandatory and structures which derive from this template may define this field.
6.3.4.1 AllocationPossible 字段6.3.4.1 AllocationPossible Field

AllocationPossible 字段应说明给定目录条目是否可以在群集堆中进行分配。The AllocationPossible field shall describe whether or not an allocation in the Cluster Heap is possible for the given directory entry.

此字段的有效值应为:The valid values for this field shall be:

  • 0(表示无法进行关联的群集分配,并且 FirstCluster 和 DataLength 字段实际上是未定义的 (结构,从此模板派生的结构可以重新定义这些字段) 0, which means an associated allocation of clusters is not possible and the FirstCluster and DataLength fields are actually undefined (structures which derive from this template may redefine those fields)

  • 1,表示可能会分配群集,并且 FirstCluster 和 DataLength 字段按定义1, which means an associated allocation of clusters is possible and the FirstCluster and DataLength fields are as defined

6.3.4.2 NoFatChain 字段6.3.4.2 NoFatChain Field

NoFatChain 字段应指示活动的 FAT 是否描述给定分配的群集链。The NoFatChain field shall indicate whether or not the active FAT describes the given allocation's cluster chain.

此字段的有效值应为:The valid values for this field shall be:

  • 0,表示分配的群集链的对应 FAT 条目有效,且实现应对其进行解释;如果 AllocationPossible 字段包含值0,或者如果 AllocationPossible 字段包含值1,并且 FirstCluster 字段包含值0,则此字段的唯一有效值为00, which means the corresponding FAT entries for the allocation's cluster chain are valid and implementations shall interpret them; if the AllocationPossible field contains the value 0, or if the AllocationPossible field contains the value 1 and the FirstCluster field contains the value 0, then this field's only valid value is 0

  • 1,表示关联的分配是一系列连续的群集;群集的相应的 FAT 条目无效,实现不应解释它们;实现可以使用以下公式来计算关联的分配的大小: DataLength/ (2SectorsPerClusterShift * 2BytesPerSectorShift) 向上舍入到最接近的整数1, which means the associated allocation is one contiguous series of clusters; the corresponding FAT entries for the clusters are invalid and implementations shall not interpret them; implementations may use the following equation to calculate the size of the associated allocation: DataLength / (2SectorsPerClusterShift* 2BytesPerSectorShift) rounded up to the nearest integer

如果从此模板派生的关键主目录条目结构重新定义 GeneralPrimaryFlags 字段,则任何关联分配的群集链的相应的 FAT 条目都有效。If critical primary directory entry structures which derive from this template redefine the GeneralPrimaryFlags field, then the corresponding FAT entries for any associated allocation's cluster chain are valid.

6.3.5 FirstCluster 字段6.3.5 FirstCluster Field

FirstCluster 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.2) 部分The FirstCluster field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.2).

如果 NoFatChain 位为1,则 FirstCluster 必须指向群集堆中的有效群集。If the NoFatChain bit is 1 then FirstCluster must point to a valid cluster in the cluster heap.

从此模板派生的关键主目录条目结构可以重新定义 FirstCluster 和 DataLength 字段。Critical primary directory entry structures which derive from this template may redefine the FirstCluster and DataLength fields. 仅当 AllocationPossible 字段包含值0时,派生自此模板的其他结构才能重新定义 FirstCluster 和 DataLength 字段。Other structures which derive from this template may redefine the FirstCluster and DataLength fields only if the AllocationPossible field contains the value 0.

6.3.6 DataLength 字段6.3.6 DataLength Field

DataLength 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.3) 部分The DataLength field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.3).

如果 NoFatChain 位为1,则 DataLength 不能为零。If the NoFatChain bit is 1 then DataLength must not be zero. 如果 FirstCluster 字段为零,则 DataLength 也必须为零。If the FirstCluster field is zero, then DataLength must also be zero.

从此模板派生的关键主目录条目结构可以重新定义 FirstCluster 和 DataLength 字段。Critical primary directory entry structures which derive from this template may redefine the FirstCluster and DataLength fields. 仅当 AllocationPossible 字段包含值0时,派生自此模板的其他结构才能重新定义 FirstCluster 和 DataLength 字段。Other structures which derive from this template may redefine the FirstCluster and DataLength fields only if the AllocationPossible field contains the value 0.

6.4 通用辅助 DirectoryEntry 模板6.4 Generic Secondary DirectoryEntry Template

辅助目录条目的主要目的是提供有关目录条目集的其他信息。The central purpose of secondary directory entries is to provide additional information about a directory entry set. 解释一般辅助 DirectoryEntry 模板的功能是必需的。The ability to interpret the Generic Secondary DirectoryEntry template is mandatory.

关键和良性辅助目录项的定义与次要 exFAT 修订号关联。The definition of both critical and benign secondary directory entries correlates to the minor exFAT revision number. 支持任何关键或良性辅助目录条目此规范或后续规范定义是可选的。Support for any critical or benign secondary directory entry this specification, or subsequent specifications, defines is optional.

所有辅助目录条目结构均派生自泛型辅助项构造模板 (参见从泛型 DirectoryEntry 模板派生的 表 18) (参阅 6.2) 部分All secondary directory entry structures derive from the Generic Secondary DirectoryEntry template (see Table 18), which derives from the Generic DirectoryEntry template (see Section 6.2).

表18通用辅助 DirectoryEntry 模板Table 18 Generic Secondary DirectoryEntry Template

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(byte) (byte)

注释Comments
EntryTypeEntryType 00 11 此字段是必需的,并且节 部分 6.4.1 定义其内容。This field is mandatory and Section Section 6.4.1 defines its contents.
GeneralSecondaryFlagsGeneralSecondaryFlags 11 11 此字段是必需的,并且 节 6.4.2 定义其内容。This field is mandatory and Section 6.4.2 defines its contents.
CustomDefinedCustomDefined 22 1818 此字段是必需的,并且从此模板派生的结构定义其内容。This field is mandatory and structures which derive from this template define its contents.
FirstClusterFirstCluster 2020 44 此字段是必需的,并且 节 6.4.3 定义其内容。This field is mandatory and Section 6.4.3 defines its contents.
DataLengthDataLength 2424 88 此字段是必需的,并且 节 6.4.4 定义其内容。This field is mandatory and Section 6.4.4 defines its contents.

6.4.1 EntryType 字段6.4.1 EntryType Field

EntryType 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1 部分) The EntryType field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1)

6.4.1.1 TypeCode 字段6.4.1.1 TypeCode Field

TypeCode 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.1) 部分The TypeCode field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.1).

6.4.1.2 TypeImportance 字段6.4.1.2 TypeImportance Field

TypeImportance 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.2) 部分The TypeImportance field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.2).

6.4.1.2.1 关键辅助目录条目6.4.1.2.1 Critical Secondary Directory Entries

关键的辅助目录条目包含的信息对正确管理其包含目录条目集至关重要。Critical secondary directory entries contain information which is critical to the proper management of its containing directory entry set. 虽然对任何特定的关键辅助目录条目的支持是可选的,但无法识别的关键目录条目会将整个目录条目集呈现为不可识别 (超出适用的目录条目模板的定义) 。While support for any specific critical secondary directory entry is optional, an unrecognized critical directory entry renders the entire directory entry set as unrecognized (beyond the definition of the applicable directory entry templates).

但是,如果一个目录条目集至少包含一个实现不能识别的重要辅助目录条目,则实现应最多地解释目录条目集中目录条目的模板,而不是与目录条目集中的任何目录条目关联的数据 (文件目录条目是一个例外,请参阅 7.4) 部分However, if a directory entry set contains at least one critical secondary directory entry which an implementation does not recognize, then the implementation shall at most interpret the templates of the directory entries in the directory entry set and not the data any allocation associated with any directory entry in the directory entry set contains (File directory entries are an exception, see Section 7.4).

6.4.1.2.2 良性辅助目录条目6.4.1.2.2 Benign Secondary Directory Entries

良性辅助目录条目包含其他信息,这些信息可能对管理其包含目录条目集很有用。Benign secondary directory entries contain additional information which may be useful for managing its containing directory entry set. 支持任何特定良性辅助目录条目是可选的。Support for any specific benign secondary directory entry is optional. 无法识别的良性辅助目录条目不会将整个目录条目集呈现为无法识别。Unrecognized benign secondary directory entries do not render the entire directory entry set as unrecognized.

实现可能会忽略它无法识别的任何良性辅助条目。Implementations may ignore any benign secondary entry it does not recognize.

6.4.1.3 TypeCategory 字段6.4.1.3 TypeCategory Field

TypeCategory 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.3) 部分The TypeCategory field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.3).

对于此模板,此字段的有效值为1。For this template, the valid value for this field is 1.

6.4.1.4 正在使用字段6.4.1.4 InUse Field

正在使用字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.1.4) 部分The InUse field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.1.4).

6.4.2 GeneralSecondaryFlags 字段6.4.2 GeneralSecondaryFlags Field

GeneralSecondaryFlags 字段包含标志 (参阅 表 19) 。The GeneralSecondaryFlags field contains flags (see Table 19).

表19泛型 GeneralSecondaryFlags 字段结构Table 19 Generic GeneralSecondaryFlags Field Structure

字段名称Field Name

OffsetOffset

(位) (bit)

大小Size

(位) (bits)

注释Comments
AllocationPossibleAllocationPossible 00 11 此字段是必需的,并且 节 6.4.2.1 定义其内容。This field is mandatory and Section 6.4.2.1 defines its contents.
NoFatChainNoFatChain 11 11 此字段是必需的,并且 节 6.4.2.2 定义其内容。This field is mandatory and Section 6.4.2.2 defines its contents.
CustomDefinedCustomDefined 22 66 此字段是必需的,从此模板派生的结构可以定义此字段。This field is mandatory and structures which derive from this template may define this field.
6.4.2.1 AllocationPossible 字段6.4.2.1 AllocationPossible Field

AllocationPossible 字段应具有与泛型主项名称模板中的相同命名字段相同的定义 (请参阅 6.3.4.1) 部分The AllocationPossible field shall have the same definition as the same-named field in the Generic Primary DirectoryEntry template (see Section 6.3.4.1).

6.4.2.2 NoFatChain 字段6.4.2.2 NoFatChain Field

NoFatChain 字段应具有与泛型主项名称模板中的相同命名字段相同的定义 (请参阅 6.3.4.2) 部分The NoFatChain field shall have the same definition as the same-named field in the Generic Primary DirectoryEntry template (see Section 6.3.4.2).

6.4.3 FirstCluster 字段6.4.3 FirstCluster Field

FirstCluster 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.2) 部分The FirstCluster field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.2).

如果 NoFatChain 位为1,则 FirstCluster 必须指向群集堆中的有效群集。If the NoFatChain bit is 1 then FirstCluster must point to a valid cluster in the cluster heap.

6.4.4 DataLength 字段6.4.4 DataLength Field

DataLength 字段应符合泛型 DirectoryEntry 模板中提供的定义 (请参阅 6.2.3) 部分The DataLength field shall conform to the definition provided in the Generic DirectoryEntry template (see Section 6.2.3).

如果 NoFatChain 位为1,则 DataLength 不能为零。If the NoFatChain bit is 1 then DataLength must not be zero. 如果 FirstCluster 字段为零,则 DataLength 也必须为零。If the FirstCluster field is zero, then DataLength must also be zero.

7目录条目定义7 Directory Entry Definitions

ExFAT 文件系统的修订版1.00 定义以下目录条目:Revision 1.00 of the exFAT file system defines the following directory entries:

7.1 分配位图目录条目7.1 Allocation Bitmap Directory Entry

在 exFAT 文件系统中,FAT 不描述群集的分配状态;相反,分配位图就是这样。In the exFAT file system, a FAT does not describe the allocation state of clusters; rather, an Allocation Bitmap does. 分配位图存在于群集堆中 (参阅 7.1.5) 部分 ,并在根目录中包含相应的关键主目录条目 (参阅 表 20) 。Allocation Bitmaps exist in the Cluster Heap (see Section 7.1.5) and have corresponding critical primary directory entries in the root directory (see Table 20).

NumberOfFats 字段确定根目录中有效分配位图目录项的数目。The NumberOfFats field determines the number of valid Allocation Bitmap directory entries in the root directory. 如果 NumberOfFats 字段包含值1,则唯一有效的分配位图目录条目数为1。If the NumberOfFats field contains the value 1, then the only valid number of Allocation Bitmap directory entries is 1. 此外,如果一个分配位图目录条目描述了第一个分配位图 (请参阅 7.1.2.1) 部分Further, the one Allocation Bitmap directory entry is only valid if it describes the First Allocation Bitmap (see Section 7.1.2.1). 如果 "NumberOfFats" 字段包含值2,则分配位图目录条目的有效数量只有2个。If the NumberOfFats field contains the value 2, then the only valid number of Allocation Bitmap directory entries is 2. 此外,两个分配位图目录项仅在描述第一个分配位图,另一个用于描述第二个分配位图时才有效。Further, the two Allocation Bitmap directory entries are only valid if one describes the First Allocation Bitmap and the other describes the Second Allocation Bitmap.

表20分配位图 DirectoryEntry 结构Table 20 Allocation Bitmap DirectoryEntry Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(byte) (byte)

注释Comments
EntryTypeEntryType 00 11 此字段是必需的,并且 节 7.1.1 定义其内容。This field is mandatory and Section 7.1.1 defines its contents.
BitmapFlagsBitmapFlags 11 11 此字段是必需的,并且 节 7.1.2 定义其内容。This field is mandatory and Section 7.1.2 defines its contents.
保留Reserved 22 1818 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
FirstClusterFirstCluster 2020 44 此字段是必需的,并且 节 7.1.3 定义其内容。This field is mandatory and Section 7.1.3 defines its contents.
DataLengthDataLength 2424 88 此字段是必需的,并且 节 7.1.4 定义其内容。This field is mandatory and Section 7.1.4 defines its contents.

7.1.1 EntryType 字段7.1.1 EntryType Field

EntryType 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1) 部分The EntryType field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1).

7.1.1.1 TypeCode 字段7.1.1.1 TypeCode Field

TypeCode 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.1) 部分The TypeCode field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.1).

对于分配位图目录项,此字段的有效值为1。For an Allocation Bitmap directory entry, the valid value for this field is 1.

7.1.1.2 TypeImportance 字段7.1.1.2 TypeImportance Field

TypeImportance 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.2) 部分The TypeImportance field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.2).

对于分配位图目录项,此字段的有效值为0。For an Allocation Bitmap directory entry, the valid value for this field is 0.

7.1.1.3 TypeCategory 字段7.1.1.3 TypeCategory Field

TypeCategory 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.3) 部分The TypeCategory field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.3).

7.1.1.4 正在使用字段7.1.1.4 InUse Field

正在使用字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.4) 部分The InUse field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.4).

7.1.2 BitmapFlags 字段7.1.2 BitmapFlags Field

BitmapFlags 字段包含标志 (参阅 表 21) 。The BitmapFlags field contains flags (see Table 21).

表 21 BitmapFlags 字段结构Table 21 BitmapFlags Field Structure

字段名称Field Name

OffsetOffset

(位) (bit)

大小Size

(位) (bits)

注释Comments
BitmapIdentifierBitmapIdentifier 00 11 此字段是必需的,并且 节 7.1.2.1 定义其内容。This field is mandatory and Section 7.1.2.1 defines its contents.
保留Reserved 11 77 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
7.1.2.1 BitmapIdentifier 字段7.1.2.1 BitmapIdentifier Field

BitmapIdentifier 字段应指示给定目录条目描述的分配位图。The BitmapIdentifier field shall indicate which Allocation Bitmap the given directory entry describes. 实现应将第一个分配位图与第一个 FAT 结合使用,并且应将第二个分配位图与第二个 FAT 一起使用。Implementations shall use the First Allocation Bitmap in conjunction with the First FAT and shall use the Second Allocation Bitmap in conjunction with the Second FAT. ActiveFat 字段描述哪个 FAT 和分配位图处于活动状态。The ActiveFat field describes which FAT and Allocation Bitmap are active.

此字段的有效值应为:The valid values for this field shall be:

  • 0,表示给定目录条目描述第一个分配位图0, which means the given directory entry describes the First Allocation Bitmap

  • 1,表示给定目录条目描述第二个分配位图,并且仅当 NumberOfFats 包含值2时才可能出现这种情况。1, which means the given directory entry describes the Second Allocation Bitmap and is possible only when NumberOfFats contains the value 2

7.1.3 FirstCluster 字段7.1.3 FirstCluster Field

FirstCluster 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.5) 部分The FirstCluster field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.5).

此字段包含群集链的第一个群集的索引,如 FAT 所述,它托管分配位图。This field contains the index of the first cluster of the cluster chain, as the FAT describes, which hosts the Allocation Bitmap.

7.1.4 DataLength 字段7.1.4 DataLength Field

DataCluster 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.6) 部分The DataCluster field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.6).

7.1.5 分配位图7.1.5 Allocation Bitmap

分配位图记录群集堆中群集的分配状态。An Allocation Bitmap records the allocation state of the clusters in the Cluster Heap. 分配位图中的每个位指示其对应的群集是否可用于分配。Each bit in an Allocation Bitmap indicates whether its corresponding cluster is available for allocation or not.

分配位图表示从最低到最高的索引 (参阅 表 22) 。An Allocation Bitmap represents clusters from lowest to highest index (see Table 22). 由于历史原因,第一个群集的索引为2。For historical reasons, the first cluster has index 2. 注意:位图中的第一位是第一个字节的最低顺序位。Note: the first bit in the bitmap is the lowest-order bit of the first byte.

表22分配位图结构Table 22 Allocation Bitmap Structure

字段名称Field Name

OffsetOffset

(位) (bit)

大小Size

(位) (bits)

注释Comments
BitmapEntry [2]BitmapEntry[2] 00 11 此字段是必需的,并且节 部分 7.1.5.1 定义其内容。This field is mandatory and Section Section 7.1.5.1 defines its contents.

..

..

..

..

..

..

..

..

..

..

..

..

BitmapEntry [ClusterCount + 1]BitmapEntry[ClusterCount+1] ClusterCount-1ClusterCount - 1 11

此字段是必需的,并且 节 7.1.5.1 定义其内容。This field is mandatory and Section 7.1.5.1 defines its contents.

注意:主和备份引导扇区都包含 ClusterCount 字段。Note: the Main and Backup Boot Sectors both contain the ClusterCount field.

保留Reserved ClusterCountClusterCount (DataLength\ * 8) – ClusterCount(DataLength \* 8) – ClusterCount

此字段是必需的,并且保留其内容(如果有)。This field is mandatory and its contents, if any, are reserved.

注意:主和备份引导扇区都包含 ClusterCount 字段。Note: the Main and Backup Boot Sectors both contain the ClusterCount field.

7.1.5.1 BitmapEntry [ 2 ] .。。BitmapEntry [ ClusterCount + 1 个 ] 字段7.1.5.1 BitmapEntry[2] ... BitmapEntry[ClusterCount+1] Fields

此数组中的每个 BitmapEntry 字段表示群集堆中的群集。Each BitmapEntry field in this array represents a cluster in the Cluster Heap. BitmapEntry [ 2 ] 表示群集堆中的第一个群集,BitmapEntry [ ClusterCount + 1 ] 表示群集堆中的最后一个群集。BitmapEntry[2] represents the first cluster in the Cluster Heap and BitmapEntry[ClusterCount+1] represents the last cluster in the Cluster Heap.

这些字段的有效值应为:The valid values for these fields shall be:

  • 0,用于描述可用于分配的相应群集0, which describes the corresponding cluster as available for allocation

  • 1,描述了可用于分配 (群集分配可能已使用相应群集的相应群集,或者活动 FAT 可能会将相应的群集描述为错误) 1, which describes the corresponding cluster as not available for allocation (a cluster allocation may already consume the corresponding cluster or the active FAT may describe the corresponding cluster as bad)

7.2 向上表目录条目7.2 Up-case Table Directory Entry

事例表定义从小写转换为大写字符的转换。The Up-case Table defines the conversion from lower-case to upper-case characters. 这一点很重要,因为文件名目录条目 (参见7.7 部分的) 使用 Unicode 字符,exFAT 文件系统不区分大小写,并保留大小写。This is important due to the File Name directory entry (see Section 7.7) using Unicode characters and the exFAT file system being case insensitive and case preserving. 在群集堆中存在上事例表 (参阅 7.2.5) 部分 ,并在根目录中包含相应的关键主目录条目 (参阅 表 23) 。The Up-case Table exists in the Cluster Heap (see Section 7.2.5) and has a corresponding critical primary directory entry in the root directory (see Table 23). 有效的事例表目录条目数为1。The valid number of Up-case Table directory entries is 1.

由于用例表和文件名之间的关系,实现不应修改向上表,而不会因格式操作而生成。Due to the relationship between the Up-case Table and file names, implementations should not modify the Up-case Table, except as a result of format operations.

表23向上表 DirectoryEntry 结构Table 23 Up-case Table DirectoryEntry Structure

字段名称Field Name

OffsetOffset

(byte) (byte)

大小Size

(byte) (byte)

注释Comments
EntryTypeEntryType 00 11 此字段是必需的,并且 节 7.2.1 定义其内容。This field is mandatory and Section 7.2.1 defines its contents.
Reserved1Reserved1 11 33 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
TableChecksumTableChecksum 44 44 此字段是必需的,并且 节 7.2.2 定义其内容。This field is mandatory and Section 7.2.2 defines its contents.
Reserved2Reserved2 88 1212 此字段是必需的,其内容已保留。This field is mandatory and its contents are reserved.
FirstClusterFirstCluster 2020 44 此字段是必需的,并且 节 7.2.3 定义其内容。This field is mandatory and Section 7.2.3 defines its contents.
DataLengthDataLength 2424 88 此字段是必需的,并且 节 7.2.4 定义其内容。This field is mandatory and Section 7.2.4 defines its contents.

7.2.1 EntryType 字段7.2.1 EntryType Field

EntryType 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1) 部分The EntryType field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1).

7.2.1.1 TypeCode 字段7.2.1.1 TypeCode Field

TypeCode 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.1) 部分The TypeCode field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.1).

对于 "上事例表目录" 条目,此字段的有效值为For the Up-case Table directory entry, the valid value for this field is 2.

7.2.1.2 TypeImportance 字段7.2.1.2 TypeImportance Field

TypeImportance 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.2) 部分The TypeImportance field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.2).

对于 "上事例表目录" 条目,此字段的有效值为For the Up-case Table directory entry, the valid value for this field is 0.

7.2.1.3 TypeCategory 字段7.2.1.3 TypeCategory Field

TypeCategory 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.3) 部分The TypeCategory field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.3).

7.2.1.4 正在使用字段7.2.1.4 InUse Field

正在使用字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.1.4) 部分The InUse field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.1.4).

7.2.2 TableChecksum 字段7.2.2 TableChecksum Field

"TableChecksum" 字段包含 (表的校验和,FirstCluster 和 DataLength 字段说明) 。The TableChecksum field contains the checksum of the Up-case Table (which the FirstCluster and DataLength fields describe). 在使用事例表之前,实现应验证此字段的内容是否有效。Implementations shall verify the contents of this field are valid prior to using the Up-case Table.

图 3 TableChecksum 计算Figure 3 TableChecksum Computation

UInt32 TableChecksum
(
    UCHAR  * Table,    // points to an in-memory copy of the up-case table
    UInt64   DataLength
)
{
    UInt32 Checksum = 0;
    UInt64 Index;

    for (Index = 0; Index < DataLength; Index++)
    {
        Checksum = ((Checksum&1) ? 0x80000000 : 0) + (Checksum>>1) + (UInt32)Table[Index];
    }

    return Checksum;
}

7.2.3 FirstCluster 字段7.2.3 FirstCluster Field

FirstCluster 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.5) 部分The FirstCluster field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.5).

此字段包含群集链的第一个群集的索引,如 FAT 所述,它承载了事例表。This field contains the index of the first cluster of the cluster chain, as the FAT describes, which hosts the Up-case Table.

7.2.4 DataLength 字段7.2.4 DataLength Field

DataCluster 字段应符合一般主 DirectoryEntry 模板中提供的定义 (请参阅 6.3.6) 部分The DataCluster field shall conform to the definition provided in the Generic Primary DirectoryEntry template (see Section 6.3.6).

7.2.5 用例表7.2.5 Up-case Table

上事例表是一系列 Unicode 字符映射。An up-case table is a series of Unicode character mappings. 字符映射由一个2字节的字段组成,该字段在用来表示要进行向上大小写的 Unicode 字符的上事例表中的字段的索引中,以及表示上大小写 Unicode 字符的2字节字段。A character mapping consists of a 2-byte field, with the index of the field in the up-case table representing the Unicode character to be up-cased, and the 2-byte field representing the up-cased Unicode character.

前128个 Unicode 字符具有强制映射 (参阅 Table 24) 。The first 128 Unicode characters have mandatory mappings (see Table 24). 对于前128个 Unicode 字符,有任何其他字符映射的高事例表无效。An up-case table which has any other character mapping for any of the first 128 Unicode characters is invalid.

仅支持必需映射范围内的字符的实现可能会忽略向上表的其余部分的映射。Implementations which only support characters from the mandatory mapping range may ignore the mappings of the rest of the up-case table. 此类实现仅应在创建或重命名 (通过文件名目录项创建或重命名文件时使用强制映射范围内的字符,请参阅 7.7) 部分Such implementations shall only use characters from the mandatory mapping range when creating or renaming files (via the File Name directory entry, see Section 7.7). 当使用大大小写时,此类实现不应使用非必需映射范围中的大小写字符,但应将它们保留在生成的大小写的文件名中, (这是部分大小写) 。When up-casing existing file names, such implementations shall not up-case characters from the non-mandatory mapping range, but shall leave them intact in the resulting up-cased file name (this is a partial up-casing). 比较文件名时,此类实现应将不同于所使用的名称的文件名视为等效于非必需映射范围的 Unicode 字符。When comparing file names, such implementations shall treat file names which differ from the name under comparison only by Unicode characters from the non-mandatory mapping range as equivalent. 虽然此类文件名只可能是等效的,但此类实现无法确保完全大写的文件名不会与比较下的名称发生冲突。While such file names are only potentially equivalent, such implementations cannot ensure the fully up-cased file name does not collide with the name under comparison.

表24必填的第一个128事例表条目Table 24 Mandatory First 128 Up-case Table Entries

表索引Table Index 表项Table Entries
+ 0+ 0 + 1+ 1 + 2+ 2 + 3+ 3 + 4+ 4 + 5+ 5 + 6+ 6 + 7+ 7
0000h0000h 0000h0000h 0001h0001h 0002h0002h 0003h0003h 0004h0004h 0005h0005h 0006h0006h 0007h0007h
0008h0008h 0008h0008h 0009h0009h 000Ah000Ah 000Bh000Bh 000Ch000Ch 000Dh000Dh 000Eh000Eh 000Fh000Fh
0010h0010h 0010h0010h 0011h0011h 0012h0012h 0013h0013h 0014h0014h 0015h0015h 0016h0016h 0017h0017h
0018h0018h 0018h0018h 0019h0019h 001Ah001Ah 001Bh001Bh 001Ch001Ch 001Dh001Dh 001Eh001Eh 001Fh001Fh
0020h0020h 0020h0020h 0021h0021h 0022h0022h 0023h0023h 0024h0024h 0025h0025h 0026h0026h 0027h0027h
0028h0028h 0028h0028h 0029h0029h 002Ah002Ah 002Bh002Bh 002Ch002Ch 002Dh002Dh 002Eh002Eh 002Fh002Fh
0030h0030h 0030h0030h 0031h0031h 0032h0032h 0033h0033h 0034h0034h 0035h0035h 0036h0036h 0037h0037h
0038h0038h 0038h0038h 0039h0039h 003Ah003Ah 003Bh003Bh 003Ch003Ch 003Dh003Dh 003Eh003Eh 003Fh003Fh
0040h0040h 0040h0040h 0041h0041h 0042h0042h 0043h0043h 0044h0044h 0045h0045h 0046h0046h 0047h0047h
0048h0048h 0048h0048h 0049h0049h 004Ah004Ah 004Bh004Bh 004Ch004Ch 004Dh004Dh 004Eh004Eh 004Fh004Fh
0050h0050h 0050h0050h 0051h0051h 0052h0052h 0053h0053h 0054h0054h 0055h0055h 0056h0056h 0057h0057h
0058h0058h 0058h0058h 0059h0059h 005Ah005Ah 005Bh005Bh 005Ch005Ch 005Dh005Dh 005Eh005Eh 005Fh005Fh
0060h0060h 0060h0060h 0041h0041h 0042h0042h 0043h0043h 0044h0044h 0045h0045h 0046h0046h 0047h0047h
0068h0068h 0048h0048h 0049h0049h 004Ah004Ah 004Bh004Bh 004Ch004Ch 004Dh004Dh 004Eh004Eh 004Fh004Fh
0070h0070h 0050h0050h 0051h0051h 0052h0052h 0053h0053h 0054h0054h 0055h0055h 0056h0056h 0057h0057h
0078h0078h 0058h0058h 0059h0059h 005Ah005Ah 007Bh007Bh 007Ch007Ch 007Dh007Dh 007Eh007Eh 007Fh007Fh

(注意:具有非恒等大小的映射的条目为粗体)(Note: entries with non-identity up-case mappings are in bold)

设置卷的格式后,实现可能会使用标识映射压缩来生成压缩格式的高事例表,因为 Unicode 字符空间的很大部分没有大小写 (这意味着 "小写" 和 "大写" 字符等效) 。Upon formatting a volume, implementations may generate an up-case table in a compressed format using identity-mapping compression, since a large portion of the Unicode character space has no concept of case (which means the "lower-case" and "upper-case" characters are equivalent). 实现将通过表示一系列标识映射,并将其值 FFFFh 后跟标识映射的数目来压缩向上表。Implementations compress an up-case table by representing a series of identity mappings with the value FFFFh followed with the number of identity mappings.

例如,一个实现可以表示第一个 100 (64h) 字符映射,其中包含以下八个压缩的示例表:For example, an implementation may represent the first 100 (64h) character mappings with the following eight entries of a compressed up-case table:

FFFFh, 0061h, 0041h, 0042h, 0043hFFFFh, 0061h, 0041h, 0042h, 0043h

前两项指示第一个 97 (61h) 字符 (从0000h 到 0060h) 具有标识映射。The first two entries indicate the first 97 (61h) characters (from 0000h to 0060h) have identity mappings. 后面的字符0061h 到0063h,分别映射到0041h 到0043h 的字符。The subsequent characters, 0061h through 0063h, map to characters 0041h through 0043h, respectively.

在对卷进行格式化时,提供压缩的示例表的功能是可选的。The ability to provide a compressed up-case table upon formatting a volume is optional. 不过,同时需要解释未压缩的和压缩的上事例表的功能是必需的。However, the ability to interpret both an uncompressed and a compressed up-case table is mandatory. "TableChecksum" 字段的值始终符合上事例表在卷上的存在方式,可能是压缩格式或未压缩的格式。The value of the TableChecksum field always conforms to how the up-case table exists on the volume, which may be in either compressed or uncompressed format.

在对卷进行格式化时,实现应以压缩格式记录建议的用例表 (请参阅 表 25) ,TableChecksum 字段的值为 E619D30Dh。When formatting a volume, implementations should record the recommended up-case table in compressed format (see Table 25), for which the value of the TableChecksum field is E619D30Dh.

如果某个实现定义了其自己的高事例表(压缩或未压缩),则该表应涵盖从字符代码0000h 到 FFFFh 包含) 的完整 Unicode 字符范围 (。If an implementation defines its own up-case table, either compressed or uncompressed, then that table shall cover the complete Unicode character range (from character codes 0000h to FFFFh inclusive).