summaryrefslogtreecommitdiffstats
path: root/FatPkg/EnhancedFatDxe/FatFileSystem.h
diff options
context:
space:
mode:
Diffstat (limited to 'FatPkg/EnhancedFatDxe/FatFileSystem.h')
-rw-r--r--FatPkg/EnhancedFatDxe/FatFileSystem.h239
1 files changed, 119 insertions, 120 deletions
diff --git a/FatPkg/EnhancedFatDxe/FatFileSystem.h b/FatPkg/EnhancedFatDxe/FatFileSystem.h
index fc24293d52..60b9c56b71 100644
--- a/FatPkg/EnhancedFatDxe/FatFileSystem.h
+++ b/FatPkg/EnhancedFatDxe/FatFileSystem.h
@@ -20,142 +20,141 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
//
// FAT entry values
//
-#define FAT_CLUSTER_SPECIAL_EXT (MAX_UINTN & (~0xF))
-#define FAT_CLUSTER_SPECIAL ((FAT_CLUSTER_SPECIAL_EXT) | 0x07)
-#define FAT_CLUSTER_FREE 0
-#define FAT_CLUSTER_RESERVED (FAT_CLUSTER_SPECIAL)
-#define FAT_CLUSTER_BAD (FAT_CLUSTER_SPECIAL)
-#define FAT_CLUSTER_LAST (-1)
-#define FAT_END_OF_FAT_CHAIN(Cluster) ((Cluster) > (FAT_CLUSTER_SPECIAL))
-#define FAT_MIN_CLUSTER 2
-#define FAT_MAX_FAT12_CLUSTER 0xFF5
-#define FAT_MAX_FAT16_CLUSTER 0xFFF5
-#define FAT_CLUSTER_SPECIAL_FAT12 0xFF7
-#define FAT_CLUSTER_SPECIAL_FAT16 0xFFF7
-#define FAT_CLUSTER_SPECIAL_FAT32 0x0FFFFFF7
-#define FAT_CLUSTER_MASK_FAT12 0xFFF
-#define FAT_CLUSTER_UNMASK_FAT12 0xF000
-#define FAT_CLUSTER_MASK_FAT32 0x0FFFFFFF
-#define FAT_CLUSTER_UNMASK_FAT32 0xF0000000
-#define FAT_POS_FAT12(a) ((a) * 3 / 2)
-#define FAT_POS_FAT16(a) ((a) * 2)
-#define FAT_POS_FAT32(a) ((a) * 4)
-#define FAT_ODD_CLUSTER_FAT12(a) (((a) & 1) != 0)
-
+#define FAT_CLUSTER_SPECIAL_EXT (MAX_UINTN & (~0xF))
+#define FAT_CLUSTER_SPECIAL ((FAT_CLUSTER_SPECIAL_EXT) | 0x07)
+#define FAT_CLUSTER_FREE 0
+#define FAT_CLUSTER_RESERVED (FAT_CLUSTER_SPECIAL)
+#define FAT_CLUSTER_BAD (FAT_CLUSTER_SPECIAL)
+#define FAT_CLUSTER_LAST (-1)
+#define FAT_END_OF_FAT_CHAIN(Cluster) ((Cluster) > (FAT_CLUSTER_SPECIAL))
+#define FAT_MIN_CLUSTER 2
+#define FAT_MAX_FAT12_CLUSTER 0xFF5
+#define FAT_MAX_FAT16_CLUSTER 0xFFF5
+#define FAT_CLUSTER_SPECIAL_FAT12 0xFF7
+#define FAT_CLUSTER_SPECIAL_FAT16 0xFFF7
+#define FAT_CLUSTER_SPECIAL_FAT32 0x0FFFFFF7
+#define FAT_CLUSTER_MASK_FAT12 0xFFF
+#define FAT_CLUSTER_UNMASK_FAT12 0xF000
+#define FAT_CLUSTER_MASK_FAT32 0x0FFFFFFF
+#define FAT_CLUSTER_UNMASK_FAT32 0xF0000000
+#define FAT_POS_FAT12(a) ((a) * 3 / 2)
+#define FAT_POS_FAT16(a) ((a) * 2)
+#define FAT_POS_FAT32(a) ((a) * 4)
+#define FAT_ODD_CLUSTER_FAT12(a) (((a) & 1) != 0)
//
// FAT attribute define
//
-#define FAT_ATTRIBUTE_READ_ONLY 0x01
-#define FAT_ATTRIBUTE_HIDDEN 0x02
-#define FAT_ATTRIBUTE_SYSTEM 0x04
-#define FAT_ATTRIBUTE_VOLUME_ID 0x08
-#define FAT_ATTRIBUTE_DIRECTORY 0x10
-#define FAT_ATTRIBUTE_ARCHIVE 0x20
-#define FAT_ATTRIBUTE_DEVICE 0x40
-#define FAT_ATTRIBUTE_LFN 0x0F
+#define FAT_ATTRIBUTE_READ_ONLY 0x01
+#define FAT_ATTRIBUTE_HIDDEN 0x02
+#define FAT_ATTRIBUTE_SYSTEM 0x04
+#define FAT_ATTRIBUTE_VOLUME_ID 0x08
+#define FAT_ATTRIBUTE_DIRECTORY 0x10
+#define FAT_ATTRIBUTE_ARCHIVE 0x20
+#define FAT_ATTRIBUTE_DEVICE 0x40
+#define FAT_ATTRIBUTE_LFN 0x0F
//
// Some Long File Name definitions
//
-#define FAT_LFN_LAST 0x40 // Ordinal field
-#define MAX_LFN_ENTRIES 20
-#define LFN_CHAR1_LEN 5
-#define LFN_CHAR2_LEN 6
-#define LFN_CHAR3_LEN 2
-#define LFN_CHAR_TOTAL (LFN_CHAR1_LEN + LFN_CHAR2_LEN + LFN_CHAR3_LEN)
-#define LFN_ENTRY_NUMBER(a) (((a) + LFN_CHAR_TOTAL - 1) / LFN_CHAR_TOTAL)
+#define FAT_LFN_LAST 0x40 // Ordinal field
+#define MAX_LFN_ENTRIES 20
+#define LFN_CHAR1_LEN 5
+#define LFN_CHAR2_LEN 6
+#define LFN_CHAR3_LEN 2
+#define LFN_CHAR_TOTAL (LFN_CHAR1_LEN + LFN_CHAR2_LEN + LFN_CHAR3_LEN)
+#define LFN_ENTRY_NUMBER(a) (((a) + LFN_CHAR_TOTAL - 1) / LFN_CHAR_TOTAL)
//
// Some 8.3 File Name definitions
//
-#define FAT_MAIN_NAME_LEN 8
-#define FAT_EXTEND_NAME_LEN 3
-#define FAT_NAME_LEN (FAT_MAIN_NAME_LEN + FAT_EXTEND_NAME_LEN)
+#define FAT_MAIN_NAME_LEN 8
+#define FAT_EXTEND_NAME_LEN 3
+#define FAT_NAME_LEN (FAT_MAIN_NAME_LEN + FAT_EXTEND_NAME_LEN)
//
// Some directory entry information
//
-#define FAT_ENTRY_INFO_OFFSET 13
-#define DELETE_ENTRY_MARK 0xE5
-#define EMPTY_ENTRY_MARK 0x00
+#define FAT_ENTRY_INFO_OFFSET 13
+#define DELETE_ENTRY_MARK 0xE5
+#define EMPTY_ENTRY_MARK 0x00
//
// Volume dirty Mask
//
-#define FAT16_DIRTY_MASK 0x7fff
-#define FAT32_DIRTY_MASK 0xf7ffffff
+#define FAT16_DIRTY_MASK 0x7fff
+#define FAT32_DIRTY_MASK 0xf7ffffff
//
// internal flag
//
-#define FAT_CASE_MIXED 0x01
-#define FAT_CASE_NAME_LOWER 0x08
-#define FAT_CASE_EXT_LOWER 0x10
+#define FAT_CASE_MIXED 0x01
+#define FAT_CASE_NAME_LOWER 0x08
+#define FAT_CASE_EXT_LOWER 0x10
typedef struct {
- UINT8 Ia32Jump[3];
- CHAR8 OemId[8];
- UINT16 SectorSize;
- UINT8 SectorsPerCluster;
- UINT16 ReservedSectors;
- UINT8 NumFats;
- UINT16 RootEntries; // < FAT32, root dir is fixed size
- UINT16 Sectors;
- UINT8 Media;
- UINT16 SectorsPerFat; // < FAT32
- UINT16 SectorsPerTrack; // (ignored)
- UINT16 Heads; // (ignored)
- UINT32 HiddenSectors; // (ignored)
- UINT32 LargeSectors; // Used if Sectors==0
+ UINT8 Ia32Jump[3];
+ CHAR8 OemId[8];
+ UINT16 SectorSize;
+ UINT8 SectorsPerCluster;
+ UINT16 ReservedSectors;
+ UINT8 NumFats;
+ UINT16 RootEntries; // < FAT32, root dir is fixed size
+ UINT16 Sectors;
+ UINT8 Media;
+ UINT16 SectorsPerFat; // < FAT32
+ UINT16 SectorsPerTrack; // (ignored)
+ UINT16 Heads; // (ignored)
+ UINT32 HiddenSectors; // (ignored)
+ UINT32 LargeSectors; // Used if Sectors==0
} FAT_BOOT_SECTOR_BASIC;
typedef struct {
- UINT8 PhysicalDriveNumber; // (ignored)
- UINT8 CurrentHead; // holds boot_sector_dirty bit
- UINT8 Signature; // (ignored)
- CHAR8 Id[4];
- CHAR8 FatLabel[11];
- CHAR8 SystemId[8];
+ UINT8 PhysicalDriveNumber; // (ignored)
+ UINT8 CurrentHead; // holds boot_sector_dirty bit
+ UINT8 Signature; // (ignored)
+ CHAR8 Id[4];
+ CHAR8 FatLabel[11];
+ CHAR8 SystemId[8];
} FAT_BOOT_SECTOR_EXT;
typedef struct {
- UINT32 LargeSectorsPerFat; // FAT32
- UINT16 ExtendedFlags; // FAT32 (ignored)
- UINT16 FsVersion; // FAT32 (ignored)
- UINT32 RootDirFirstCluster; // FAT32
- UINT16 FsInfoSector; // FAT32
- UINT16 BackupBootSector; // FAT32
- UINT8 Reserved[12]; // FAT32 (ignored)
- UINT8 PhysicalDriveNumber; // (ignored)
- UINT8 CurrentHead; // holds boot_sector_dirty bit
- UINT8 Signature; // (ignored)
- CHAR8 Id[4];
- CHAR8 FatLabel[11];
- CHAR8 SystemId[8];
+ UINT32 LargeSectorsPerFat; // FAT32
+ UINT16 ExtendedFlags; // FAT32 (ignored)
+ UINT16 FsVersion; // FAT32 (ignored)
+ UINT32 RootDirFirstCluster; // FAT32
+ UINT16 FsInfoSector; // FAT32
+ UINT16 BackupBootSector; // FAT32
+ UINT8 Reserved[12]; // FAT32 (ignored)
+ UINT8 PhysicalDriveNumber; // (ignored)
+ UINT8 CurrentHead; // holds boot_sector_dirty bit
+ UINT8 Signature; // (ignored)
+ CHAR8 Id[4];
+ CHAR8 FatLabel[11];
+ CHAR8 SystemId[8];
} FAT32_BOOT_SECTOR_EXT;
typedef union {
- FAT_BOOT_SECTOR_EXT FatBse;
- FAT32_BOOT_SECTOR_EXT Fat32Bse;
- } FAT_BSE;
+ FAT_BOOT_SECTOR_EXT FatBse;
+ FAT32_BOOT_SECTOR_EXT Fat32Bse;
+} FAT_BSE;
typedef struct {
- FAT_BOOT_SECTOR_BASIC FatBsb;
- FAT_BSE FatBse;
+ FAT_BOOT_SECTOR_BASIC FatBsb;
+ FAT_BSE FatBse;
} FAT_BOOT_SECTOR;
//
// FAT Info Structure
//
typedef struct {
- UINT32 ClusterCount;
- UINT32 NextCluster;
+ UINT32 ClusterCount;
+ UINT32 NextCluster;
} FAT_FREE_INFO;
typedef struct {
- UINT32 Signature;
- UINT8 ExtraBootCode[480];
- UINT32 InfoBeginSignature;
- FAT_FREE_INFO FreeInfo;
- UINT8 Reserved[12];
- UINT32 InfoEndSignature;
+ UINT32 Signature;
+ UINT8 ExtraBootCode[480];
+ UINT32 InfoBeginSignature;
+ FAT_FREE_INFO FreeInfo;
+ UINT8 Reserved[12];
+ UINT32 InfoEndSignature;
} FAT_INFO_SECTOR;
//
@@ -163,44 +162,44 @@ typedef struct {
//
#define FAT_MAX_YEAR_FROM_1980 0x7f
typedef struct {
- UINT16 Day : 5;
- UINT16 Month : 4;
- UINT16 Year : 7; // From 1980
+ UINT16 Day : 5;
+ UINT16 Month : 4;
+ UINT16 Year : 7; // From 1980
} FAT_DATE;
typedef struct {
- UINT16 DoubleSecond : 5;
- UINT16 Minute : 6;
- UINT16 Hour : 5;
+ UINT16 DoubleSecond : 5;
+ UINT16 Minute : 6;
+ UINT16 Hour : 5;
} FAT_TIME;
typedef struct {
- FAT_TIME Time;
- FAT_DATE Date;
+ FAT_TIME Time;
+ FAT_DATE Date;
} FAT_DATE_TIME;
typedef struct {
- CHAR8 FileName[11]; // 8.3 filename
- UINT8 Attributes;
- UINT8 CaseFlag;
- UINT8 CreateMillisecond; // (creation milliseconds - ignored)
- FAT_DATE_TIME FileCreateTime;
- FAT_DATE FileLastAccess;
- UINT16 FileClusterHigh; // >= FAT32
- FAT_DATE_TIME FileModificationTime;
- UINT16 FileCluster;
- UINT32 FileSize;
+ CHAR8 FileName[11]; // 8.3 filename
+ UINT8 Attributes;
+ UINT8 CaseFlag;
+ UINT8 CreateMillisecond; // (creation milliseconds - ignored)
+ FAT_DATE_TIME FileCreateTime;
+ FAT_DATE FileLastAccess;
+ UINT16 FileClusterHigh; // >= FAT32
+ FAT_DATE_TIME FileModificationTime;
+ UINT16 FileCluster;
+ UINT32 FileSize;
} FAT_DIRECTORY_ENTRY;
typedef struct {
- UINT8 Ordinal;
- CHAR8 Name1[10]; // (Really 5 chars, but not WCHAR aligned)
- UINT8 Attributes;
- UINT8 Type;
- UINT8 Checksum;
- CHAR16 Name2[6];
- UINT16 MustBeZero;
- CHAR16 Name3[2];
+ UINT8 Ordinal;
+ CHAR8 Name1[10]; // (Really 5 chars, but not WCHAR aligned)
+ UINT8 Attributes;
+ UINT8 Type;
+ UINT8 Checksum;
+ CHAR16 Name2[6];
+ UINT16 MustBeZero;
+ CHAR16 Name3[2];
} FAT_DIRECTORY_LFN;
#pragma pack()