exFAT ファイルシステムの仕様exFAT file system specification

1 Introduction (はじめに)1 Introduction

ExFAT ファイルシステムは、FAT ファイルシステムの 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 ファイルシステムには、3つの中心となる設計目標があります (以下の一覧を参照)。The exFAT file system has three central design goals (see list below).

  1. FAT ベースのファイルシステムのシンプルさを維持します。Retain the simplicity of FAT-based file systems.

    FAT ベースのファイルシステムの長所の1つは、その相対的な簡略化と実装の容易さです。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 ファイルシステムでは、非常に大きな記憶装置を効果的に実現するために、32 MB のクラスターを使用できます。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
FeedShall この仕様では、必須という用語を使用して動作を記述します。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.
MayMay この仕様では、"may" という用語を使用して、省略可能な動作を記述します。This specification uses the term “may” to describe a behavior which is optional.
MandatoryMandatory この用語は、実装によって変更される必要があり、この仕様の記述に従って解釈される必要があるフィールドまたは構造について説明します。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.
未定義。Undefined この用語は、実装が必要に応じて変更できるフィールドまたは構造の内容について説明します。たとえば、周囲のフィールドや構造体を設定するときにゼロをクリアし、特定の意味を保持することはできません。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 American Standard Code for Information InterchangeAmerican 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. 値を記述するには、10進表記を使用します。それ以外の場合は、この仕様では、修正後の文字 "h" を使用して16進数を示し、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. TexFAT は Windows CE によって使用されます。TexFAT is used by Windows CE. TexFAT では、トランザクションで使用するために、2つの 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 ボリュームには、4つのリージョンが含まれています ( 表 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 Fat オフセット–24FatOffset – 24

このサブ領域は必須であり、その内容 (存在する場合) は未定義です。This sub-region is mandatory and its contents, if any, are undefined.

注: メインおよびバックアップのブートセクターには、どちらにも、Fat オフセットフィールドが含まれています。Note: the Main and Backup Boot Sectors both contain the FatOffset field.

最初の FATFirst FAT Fat オフセットFatOffset Fat の長さFatLength

このサブ領域は必須であり、 セクション 4.1 はその内容を定義します。This sub-region is mandatory and Section 4.1 defines its contents.

注: メインおよびバックアップのブートセクターには、どちらにも、[Fat オフセット] フィールドと [Fat 長さ] フィールドが含まれています。Note: the Main and Backup Boot Sectors both contain the FatOffset and FatLength fields.

2番目の FATSecond FAT Fat オフセット + Fat の長さFatOffset + FatLength Fat の長さ \* (Number Offats – 1)FatLength \* (NumberOfFats – 1)

このサブ領域は必須であり、 セクション4.1 で その内容が定義されています (存在する場合)。This sub-region is mandatory and Section 4.1 defines its contents, if any.

注: メインおよびバックアップのブートセクターには、どちらにも、Fat オフセット、Fat の長さ、および数値 Offats の各フィールドが含まれています。Note: the Main and Backup Boot Sectors both contain the FatOffset, FatLength, and NumberOfFats fields. Number Offats フィールドには、値1と2しか保持できません。The NumberOfFats field may only hold values 1 and 2.

データ領域Data Region
クラスターヒープのアラインメントCluster Heap Alignment Fat オフセット + Fat の長さ \* 数値 OffatsFatOffset + FatLength \* NumberOfFats ClusterHeapOffset – (Fat オフセット + Fat の長さ \* Number Offats)ClusterHeapOffset – (FatOffset + FatLength \* NumberOfFats)

このサブ領域は必須であり、その内容 (存在する場合) は未定義です。This sub-region is mandatory and its contents, if any, are undefined.

注: メインおよびバックアップのブートセクターには、どちらにも、Fat オフセット、Fat の長さ、数字オフ、および ClusterHeapOffset の各フィールドが含まれています。Note: the Main and Backup Boot Sectors both contain the FatOffset, FatLength, NumberOfFats, and ClusterHeapOffset fields. Number Offats フィールドの有効値は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

メインブートリージョンには、実装で次の操作を実行できるようにするために必要なすべてのブート命令、識別情報、およびファイルシステムパラメーターが用意されています。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 file システム構造の場所を検出します。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. ブート前の手順の更新など、まれな状況を除き、の実装では、バックアップブートリージョンの内容を変更しないようにしてください。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 ボリュームと、ボリューム構造を記述する基本的な 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、またはその他のブートエージェントは、このセクターを検査し、そこに含まれるすべてのブート手順を読み込んで実行する場合があります。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 フィールドを更新する場合があります (チェックサムでは、これらの2つのフィールドは特に除外されます)。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)

[サイズ]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.
%0MustBeZero 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.
Fat オフセットFatOffset 8080 44 このフィールドは必須であり、 セクション 3.1.6 によってその内容が定義されます。This field is mandatory and Section 3.1.6 defines its contents.
Fat の長さFatLength 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.
ボリューム数VolumeSerialNumber 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.
数値 OffatsNumberOfFats 110110 11 このフィールドは必須であり、 セクション 3.1.16 によってその内容が定義されます。This field is mandatory and Section 3.1.16 defines its contents.
ドライブの選択DriveSelect 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.
ExspaceExcessSpace 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 を起動してブート命令を実行するための指示を [ブートコード] フィールドに入力します。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" で、末尾に3つの空白が含まれています。The valid value for this field is, in ASCII characters, "EXFAT ", which includes three trailing white spaces.

3.1.3 の値が0のフィールド3.1.3 MustBeZero Field

[FAT12] フィールドは、パックされた BIOS パラメーターブロックが/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 を使用して、ボリュームからブートするのに役立ちます。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で、最小のボリュームが 1 mb 未満であることを確認します。At least 220/ 2BytesPerSectorShift, which ensures the smallest volume is no less than 1MB

  • 最大で 264-1 (このフィールドに記述できる最大値)At most 264- 1, the largest value this field can describe

ただし、超過領域のサブ領域のサイズが0の場合、このフィールドの値は ClusterHeapOffset + (232-11) * 2SectorsPerClusterShiftになります。However, 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 の Fat オフセットフィールド3.1.6 FatOffset Field

FAT オフセットフィールドは、最初の 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-(Fat Length * number offats)、クラスターヒープが使用するセクターのアカウントAt most ClusterHeapOffset - (FatLength * NumberOfFats), which accounts for the sectors the Cluster Heap consumes

3.1.7 の Fat の長さのフィールド3.1.7 FatLength Field

[FAT の長さ] フィールドには、各 FAT テーブルの長さ (セクター単位) が記述されている必要があります (ボリュームには最大2つの 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-Fat オフセット)/数字オフ。クラスターヒープの前に FATs が存在することを確認します。At most (ClusterHeapOffset - FatOffset) / NumberOfFats rounded down to the nearest integer, which ensures the FATs exist before the Cluster Heap

このフィールドには、(前述のように) 下限を超える値が含まれている場合があります。これにより、2番目の 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:

  • 以前のすべてのリージョンで使用されている * セクターを考慮するための、少なくとも、Fat オフセット + fat の長さの数値オフAt least FatOffset + FatLength * NumberOfFats, to account for the sectors all the preceding regions consume

  • 最大で 232-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つ以上のクラスターを指定することをお勧めします。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. 実装では、割り当てビットマップとアップケーステーブルが使用するクラスターの後に、ルートディレクトリの最初のクラスターを不良ではない最初のクラスターに配置する必要があります。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 が含まれていて、下位バイトに値0Ah が含まれている場合、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

16-bit(bit)

[サイズ]Size

(bits)

コメントComments
ActiveFatActiveFat 00 11 このフィールドは必須であり、 セクション 3.1.13.1 によってその内容が定義されます。This field is mandatory and Section 3.1.13.1 defines its contents.
ボリュームVolumeDirty 11 11 このフィールドは必須であり、 セクション 3.1.13.2 によってその内容が定義されます。This field is mandatory and Section 3.1.13.2 defines its contents.
MediafはMediaFailure 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は、2番目の FAT と2番目の割り当てビットマップがアクティブであり、数値の Offats フィールドに値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 のフィールド3.1.13.3 MediaFailure Field

Mediafのフィールドは、次のように、実装でメディアの障害が検出されたかどうかを示すものです。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である場合、このフィールドの値は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, これは、ファイルシステムの構造、ディレクトリ、またはファイルを変更する前に、実装がこのフィールドを0にクリアする必要があることを意味します。1, 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

  • パーソナルコンピューターで共通する Cpu のメモリページサイズである最大 12 (セクターサイズは4096バイト)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 Number Offats フィールド3.1.16 NumberOfFats Field

Number Offats フィールドには、ボリュームに含まれる 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、2番目の FAT、最初のアロケーションビットマップ、および2番目のアロケーションビットマップが含まれていることを示します。この値は、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 ドライブの選択フィールド3.1.17 DriveSelect Field

ドライブ選択フィールドには、拡張 INT 13h ドライブ番号が含まれている必要があります。これにより、パーソナルコンピューター上の拡張 INT 13h を使用して、このボリュームからブートできます。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

  • 厳密には、クラスターヒープ内で割り当てられたクラスターの割合が使用できないことを示しています。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

ブートコードフィールドには、ブートに関する指示が含まれている必要があります。The BootCode field shall contain boot-strapping instructions. の実装では、コンピューターシステムの起動に必要な CPU 命令をこのフィールドに設定できます。Implementations may populate this field with the CPU instructions necessary for boot-strapping a computer system. ブートによる命令を提供しない実装では、フォーマット操作の一部として、このフィールドの各バイトを F4h (パーソナルコンピューターで一般的に使用される Cpu の halt 命令) に初期化する必要があります。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

メインの拡張ブートセクターの各セクターの構造は同じです。ただし、各セクターに個別のブート命令を保持することができます (表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). ブートベースのエージェント (メインブートセクター、代替 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)

[サイズ]Size

メモリ(bytes)

コメントComments
ExtendedBootCode コードExtendedBootCode 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 のフィールドには、ブートの指示が含まれている必要があります。The ExtendedBootCode field shall contain boot-strapping instructions. の実装では、コンピューターシステムの起動に必要な CPU 命令をこのフィールドに設定できます。Implementations may populate this field with the CPU instructions necessary for boot-strapping a computer system. ブート命令を提供しない実装では、書式設定操作の一部として、このフィールドの各バイトを営業日に初期化する必要があります。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 パラメーターサブリージョンには、製造元固有の情報を含む可能性がある10個のパラメーター構造が含まれています ( 表 7を参照)。The Main OEM Parameters sub-region contains ten parameters structures which may contain manufacturer-specific information (see Table 7). 10個の各パラメーター構造体は、ジェネリックパラメーターテンプレートから派生します ( セクション 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を参照) の2つのパラメーター構造が定義されています。This specification itself defines two parameters structures: Null Parameters (see Section 3.3.3) and Flash Parameters (see Section 3.3.4).

Backup OEM パラメーターは、メインの OEM パラメーターのバックアップであり、同じ構造になっています ( 表 7を参照)。The Backup OEM Parameters is a backup of the Main OEM Parameters and has the same structure (see Table 7).

Main または Backup の 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 パラメーターに独自のカスタムパラメーター構造 (存在する場合) とその他のパラメーター構造を設定する必要があります。Manufacturers should populate the Main and Backup OEM Parameters with their own custom parameters structures, if any, and any other parameter structures. 後続のフォーマット操作では、Main および Backup OEM パラメーターの内容を保持する必要があります。Subsequent format operations shall preserve the contents of the Main and Backup OEM Parameters.

実装では、必要に応じてメインおよびバックアップの 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)

[サイズ]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 Parameters [ 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). 未使用のパラメーターフィールドは、Null パラメーター構造を含むものとして記述する必要があります (「 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)

[サイズ]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)

[サイズ]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 Flash パラメーター3.3.4 Flash Parameters

Flash パラメーター構造は、汎用パラメーターテンプレート ( セクション 3.3.2を参照) から派生し、flash メディアのパラメーターを含んでいます ( 表 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. 実装では、フラッシュパラメーター構造の情報を使用して、読み取り/書き込み中のアクセス操作を最適化したり、ファイルシステム構造のアラインメントによってメディアのフォーマットを 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.

Flash パラメーター構造のサポートは省略可能です。Support for the Flash Parameters structure is optional.

表 10 Flash Parameters 構造体Table 10 Flash Parameters Structure

フィールド名Field Name

OffsetOffset

バイト(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 フィールドを除く、すべての Flash パラメーターフィールドに使用可能なすべての値が有効です。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 フィールドは、フラッシュメディアのページのサイズをバイト単位で記述する必要があります。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 フィールドは、フラッシュメディアの平均読み取りサイクル時間 (ナノ秒単位) を記述します。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

メインおよびバックアップのブートチェックサムにはそれぞれ、それぞれのブートリージョンにある他のすべてのサブリージョンのコンテンツの4バイトのチェックサムの繰り返しパターンが含まれています。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). 4バイトのチェックサムの繰り返しパターンは、サブ領域の先頭から末尾までのそれぞれのブートチェックサムサブ領域を塗りつぶします。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) の領域には、2つまでの FATs が含まれる場合があります。1つは最初の FAT サブリージョンに、もう1つは2番目の 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. Number Offats フィールドは、このリージョンに含まれている FATs の数を示します。The NumberOfFats field describes how many FATs this region contains. Number Offats フィールドの有効な値は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. Number Offats フィールドが2の場合、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 最初と2番目の 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. 最初の2つのエントリを除き、FAT 内のすべてのエントリは、1つのクラスターのみを表します。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)

[サイズ]Size

メモリ(bytes)

コメントComments
Fat エントリ [0]FatEntry[0] 00 44 このフィールドは必須であり、 4.1.2 で その内容が定義されています。This field is mandatory and Section 4.1.2 defines its contents.
Fat エントリ [1]FatEntry[1] 44 44 このフィールドは必須であり、 4.1.2 で その内容が定義されています。This field is mandatory and Section 4.1.2 defines its contents.
Fat エントリ [2]FatEntry[2] 88 44 このフィールドは必須であり、 セクション 4.1.3 によってその内容が定義されます。This field is mandatory and Section 4.1.3 defines its contents.

..

..

..

..

..

..

..

..

..

..

..

..

Fat エントリ [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.

ExspaceExcessSpace (ClusterCount + 2) \* 4(ClusterCount + 2) \* 4 (Fat の長さ \* 2BytesPerSectorShift) – ((clustercount + 2) \* 4)(FatLength \* 2BytesPerSectorShift) – ((ClusterCount + 2) \* 4)

このフィールドは必須であり、その内容 (存在する場合) が定義されていません。This field is mandatory and its contents, if any, are undefined.

注: メインおよびバックアップのブートセクターには、ClusterCount、Fat の長さ、および BytesPerSectorShift の各フィールドが含まれています。Note: the Main and Backup Boot Sectors both contain the ClusterCount, FatLength, and BytesPerSectorShift fields.

4.1.1 Fat エントリ [ 0 ] フィールド4.1.1 FatEntry[0] Field

Fat エントリ [ 0 フィールドは、 ] 最初のバイト (最下位バイト) のメディアの種類を表し、残りの3バイトで 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 Fat エントリ [ 1 ] フィールド4.1.2 FatEntry[1] Field

Fat エントリ [ 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 の Fat エントリ [ 2 ] ...Fat 入力 [ clustercount + 1 個の ] フィールド4.1.3 FatEntry[2] ... FatEntry[ClusterCount+1] Fields

この配列の各 Fat エントリフィールドは、クラスターヒープ内のクラスターを表している必要があります。Each FatEntry field in this array shall represent a cluster in the Cluster Heap. Fat エントリ [ 2 ] は、クラスターヒープ内の最初のクラスターを表し、fat エントリ [ 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:

  • 指定されたクラスターチェーン内の次の Fat エントリを指す2と ClusterCount + 1 の間指定された Fat エントリは、指定されたクラスターチェーンで前にあるすべての Fat エントリを指していてはいけませんBetween 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 です。指定された Fat エントリの対応するクラスターを "bad" としてマークします。Exactly FFFFFFF7h, which marks the given FatEntry's corresponding cluster as "bad"

  • 厳密には FFFFFFFFh です。これは、指定された Fat エントリの対応するクラスターをクラスターチェーンの最後のクラスターとしてマークします。これは、特定のクラスターチェーンの最後の Fat エントリに対してのみ有効な値です。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 フィールドで定義されているように、1つのクラスターを表します。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があり、これは、Fat エントリ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.

..

..

..

..

..

..

..

..

..

..

..

..

クラスター [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).

1つまたは複数のディレクトリエントリは、ファイルシステム構造、サブディレクトリ、ファイルなど、目的のものを記述するディレクトリエントリセットに結合されます。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)

[サイズ]Size

バイト(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.

"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)

[サイズ]Size

バイト(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 フィールドには3つの使用方法があり、フィールドの値によって定義されます (下の一覧を参照)。The EntryType field has three modes of usage which the value of the field defines (see list below).

  • 営業日: ディレクトリの最後のマーカーで、次の条件が適用されます。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を含む InUse フィールド ( セクション 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を含む InUse フィールド ( セクション 6.2.1.4を参照) に直接対応します。This range of values directly corresponds to the InUse field (see Section 6.2.1.4) containing the value 1

InUse フィールドが変更されないようにするには ( セクション 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

16-bit(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 の型のフィールド6.2.1.1 TypeCode Field

[種類] フィールドには、指定したディレクトリエントリの特定の型が部分的に記述されています。The TypeCode field partially describes the specific type of the given directory entry. このフィールドと、TypeImportance 度フィールドと TypeCategory フィールド ( セクション 6.2.1.2セクション 6.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.1セクション 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.2セクション 6.4.1.2.2 を参照してください)。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 InUse フィールド6.2.1.4 InUse Field

InUse フィールドは、指定されたディレクトリエントリが使用中であるかどうかを示すものである必要があります。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が含まれている場合、このフィールドの有効値は0です。At 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 テンプレートから派生します ( 表 16を参照)。これは汎用の directoryentry テンプレートから派生します ( セクション 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)

[サイズ]Size

バイト(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.
全般の PrimaryflagsGeneralPrimaryFlags 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 の型のフィールド6.3.1.1 TypeCode Field

[単位] フィールドは、汎用の 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 InUse フィールド6.3.1.4 InUse Field

InUse フィールドは、汎用の 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 の一般 Primaryflags フィールド6.3.4 GeneralPrimaryFlags Field

一般 Primaryflags フィールドにはフラグが含まれています ( 表 17を参照してください)。The GeneralPrimaryFlags field contains flags (see Table 17).

このテンプレートから派生する重要なプライマリディレクトリエントリの構造は、このフィールドを再定義できます。Critical primary directory entry structures which derive from this template may redefine this field.

表17汎用汎用 Primaryflags フィールド構造Table 17 Generic GeneralPrimaryFlags Field Structure

フィールド名Field Name

OffsetOffset

16-bit(bit)

[サイズ]Size

(bits)

コメントComments
割り当て可能AllocationPossible 00 11 このフィールドは必須であり、 セクション 6.3.4.1 によってその内容が定義されます。This field is mandatory and Section 6.3.4.1 defines its contents.
Nofat チェーンNoFatChain 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 の使用可能なフィールド6.3.4.1 AllocationPossible Field

使用可能なフィールドは、指定されたディレクトリエントリでクラスターヒープ内の割り当てが可能かどうかを示します。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 Nofat チェーンフィールド6.3.4.2 NoFatChain Field

Nofat Chain フィールドは、アクティブな 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 エントリが有効であり、実装によって解釈されることを意味します。[使用可能] フィールドに値0が含まれている場合、または [使用可能] フィールドに値1が含まれていて、[FirstCluster] フィールドに値0が含まれている場合、このフィールドの有効値は0です。0, 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

このテンプレートから派生する重要なプライマリディレクトリエントリの構造が、一般の Primaryflags フィールドを再定義する場合は、関連付けられているすべての割り当てのクラスターチェーンに対応する 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).

Nofat チェーンビットが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. このテンプレートから派生するその他の構造体は、使用可能なフィールドに値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).

Nofat チェーンビットが1の場合、DataLength を0にすることはできません。If the NoFatChain bit is 1 then DataLength must not be zero. FirstCluster フィールドが0の場合は、DataLength も0にする必要があります。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. このテンプレートから派生するその他の構造体は、使用可能なフィールドに値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を参照)。このテンプレートは汎用の directoryentry テンプレートから派生します ( セクション 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)

[サイズ]Size

バイト(byte)

コメントComments
EntryTypeEntryType 00 11 このフィールドは必須であり、セクション セクション 6.4.1 にその内容が定義されています。This field is mandatory and Section Section 6.4.1 defines its contents.
全般の SecondaryflagsGeneralSecondaryFlags 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 の型のフィールド6.4.1.1 TypeCode Field

[単位] フィールドは、汎用の 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).

ただし、実装で認識されない重要なセカンダリディレクトリエントリがディレクトリエントリセットに1つ以上含まれている場合、その実装では、ディレクトリエントリセット内のディレクトリエントリのテンプレートが最も多く解釈される必要があります。ディレクトリエントリセット内のディレクトリエントリに関連付けられているすべての割り当て (ファイルディレクトリエントリは 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 InUse フィールド6.4.1.4 InUse Field

InUse フィールドは、汎用の 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 の全般の Secondaryflags フィールド6.4.2 GeneralSecondaryFlags Field

"全般 Secondaryflags" フィールドにはフラグが含まれています ( 表 19を参照)。The GeneralSecondaryFlags field contains flags (see Table 19).

表19一般全般 Secondaryflags フィールド構造Table 19 Generic GeneralSecondaryFlags Field Structure

フィールド名Field Name

OffsetOffset

16-bit(bit)

[サイズ]Size

(bits)

コメントComments
割り当て可能AllocationPossible 00 11 このフィールドは必須であり、 セクション 6.4.2.1 によってその内容が定義されます。This field is mandatory and Section 6.4.2.1 defines its contents.
Nofat チェーンNoFatChain 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 の使用可能なフィールド6.4.2.1 AllocationPossible Field

使用可能なフィールドは、汎用プライマリ DirectoryEntry テンプレートで同じ名前を持つフィールドと同じ定義にする必要があります (「 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 Nofat チェーンフィールド6.4.2.2 NoFatChain Field

Nofat チェーンフィールドは、汎用プライマリ DirectoryEntry テンプレートで同じ名前を持つフィールドと同じ定義である必要があります (「 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).

Nofat チェーンビットが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).

Nofat チェーンビットが1の場合、DataLength を0にすることはできません。If the NoFatChain bit is 1 then DataLength must not be zero. FirstCluster フィールドが0の場合は、DataLength も0にする必要があります。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).

Number Offats フィールドは、ルートディレクトリ内の有効なアロケーションビットマップディレクトリエントリの数を決定します。The NumberOfFats field determines the number of valid Allocation Bitmap directory entries in the root directory. Number Offats フィールドに値1が含まれている場合、割り当てビットマップディレクトリエントリの有効な数は1のみです。If the NumberOfFats field contains the value 1, then the only valid number of Allocation Bitmap directory entries is 1. また、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). Number Offats フィールドに値2が含まれている場合、割り当てビットマップディレクトリエントリの有効な数は2です。If the NumberOfFats field contains the value 2, then the only valid number of Allocation Bitmap directory entries is 2. さらに、2つのアロケーションビットマップディレクトリエントリは、1つ目の割り当てビットマップが記述されている場合にのみ有効です。もう1つは、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)

[サイズ]Size

バイト(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 の型のフィールド7.1.1.1 TypeCode Field

[単位] フィールドは、汎用プライマリ 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 テンプレートで提供されている定義には、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 InUse フィールド7.1.1.4 InUse Field

InUse フィールドは、汎用プライマリ 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

16-bit(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 と組み合わせて使用する必要があり、2番目のアロケーションビットマップを2番目の 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 (指定されたディレクトリエントリで2番目の割り当てビットマップが記述されており、数値が含まれている場合にのみ可能です) 21, 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

16-bit(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)

[サイズ]Size

バイト(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 の型のフィールド7.2.1.1 TypeCode Field

[単位] フィールドは、汎用プライマリ 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 テンプレートで提供されている定義には、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 InUse フィールド7.2.1.4 InUse Field

InUse フィールドは、汎用プライマリ 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 Up-case テーブル7.2.5 Up-case Table

アップケーステーブルは、一連の Unicode 文字のマッピングです。An up-case table is a series of Unicode character mappings. 文字のマッピングは、2バイトのフィールドで構成されています。これは、up ケーステーブル内のフィールドのインデックスで、大文字と小文字が区別される Unicode 文字を表し、2バイトのフィールドで、大文字の Unicode 文字を表します。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 文字には、必須のマッピングがあります ( 表 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). ファイル名を比較する場合、このような実装では、指定された名前とは異なるファイル名を処理する必要があります。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 0042時間0042h 0043h0043h 0044時間0044h 0045h0045h 0046h0046h 0047時間0047h
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 0042時間0042h 0043h0043h 0044時間0044h 0045h0045h 0046h0046h 0047時間0047h
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

(注: 非 id のアップケースマッピングを含むエントリは太字で記載されています)(Note: entries with non-identity up-case mappings are in bold)

ボリュームをフォーマットすると、Unicode 文字空間の大部分が大文字と小文字の概念を持たないので (つまり、"小文字" と "大文字" の文字が等価であることを意味します)、実装では、id マッピング圧縮を使用して、圧縮形式でアップケーステーブルを生成する場合があります。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 に続けて id マッピングの数を指定して、一連の id マッピングを表すことによって、上位ケーステーブルを圧縮します。Implementations compress an up-case table by representing a series of identity mappings with the value FFFFh followed with the number of identity mappings.

たとえば、実装は、圧縮されたアップケーステーブルの次の8つのエントリを持つ最初の 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、0042 h、0041hFFFFh, 0061h, 0041h, 0042h, 0043h

最初の2つのエントリは、最初の 97 (61h) 文字 (0000h から 0060h) に id マッピングがあることを示します。The first two entries indicate the first 97 (61h) characters (from 0000h to 0060h) have identity mappings. それ以降の16進数である 0061h 0063h は、それぞれ 0041h ~ 0041h の文字にマップされます。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.

実装で独自のアップケーステーブル (圧縮されているか、圧縮されていないもの) が定義されている場合、そのテーブルは完全な Unicode 文字範囲 (文字コード0000h から FFFFh 包括) をカバーする必要があります。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).