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