Deleted File Recovery: FAT32 Boot Sector and Bootstrap

FAT32 Features

The following topics describe the FAT32 file system.

Boot Sector and Bootstrap Modifications

Modifications Description
Reserved Sectors FAT32 drives contain more reserved sectors than FAT16 or FAT12 drives. The number of reserved sectors is usually 32, but can vary.
Boot Sector Modifications Because a FAT32 BIOS Parameter Block (BPB), represented by the BPB structure, is larger than a standard BPB, the boot record on FAT32 drives is greater than 1 sector.
In addition, there is a sector in the reserved area on FAT32 drives that contains values for the count of free clusters and the cluster number of the most recently allocated cluster.
These values are members of the BIGFATBOOTFSINFO structure which is contained within this sector. These additional fields allow the system to initialize the values without having to read the entire file allocation table.
Root Directory The root directory on a FAT32 drive is not stored in a fixed location as it is on FAT16 and FAT12 drives. On FAT32 drives, the root directory is an ordinary cluster chain. The A_BF_BPB_RootDirStrtClus member in the BPB structure contains the number of the first cluster in the root directory. This allows the root directory to grow as needed. In addition, the BPB_RootEntries member of BPB is ignored on a FAT32 drive.
Sectors Per FAT The A_BF_BPB_SectorsPerFAT member of BPB is always zero on a FAT32 drive. Additionally, the A_BF_BPB_BigSectorsPerFat and A_BF_BPB_BigSectorsPerFatHi members of the updated BPB provide equivalent information for FAT32 media.

BPB (FAT32)

The BPB for FAT32 drives is an extended version of the FAT16/FAT12 BPB. It contains identical information to a standard BPB, but also includes several extra fields for FAT32 specific information.

This structure is implemented in Windows OEM Service Release 2 and later.

  • A_BF_BPB STRUC
  • A_BF_BPB_BytesPerSector DW ?
  • A_BF_BPB_SectorsPerCluster DB ?
  • A_BF_BPB_ReservedSectors DW ?
  • A_BF_BPB_NumberOfFATs DB ?
  • A_BF_BPB_RootEntries DW ?
  • A_BF_BPB_TotalSectors DW ?
  • A_BF_BPB_MediaDescriptor DB ?
  • A_BF_BPB_SectorsPerFAT DW ?
  • A_BF_BPB_SectorsPerTrack DW ?
  • A_BF_BPB_Heads DW ?
  • A_BF_BPB_HiddenSectors DW ?
  • A_BF_BPB_HiddenSectorsHigh DW ?
  • A_BF_BPB_BigTotalSectors DW ?
  • A_BF_BPB_BigTotalSectorsHigh DW ?
  • A_BF_BPB_BigSectorsPerFat DW ?
  • A_BF_BPB_BigSectorsPerFatHi DW ?
  • A_BF_BPB_ExtFlags DW ?
  • A_BF_BPB_FS_Version DW ?
  • A_BF_BPB_RootDirStrtClus DW ?
  • A_BF_BPB_RootDirStrtClusHi DW ?
  • A_BF_BPB_FSInfoSec DW ?
  • A_BF_BPB_BkUpBootSec DW ?
  • A_BF_BPB_Reserved DW 6 DUP (?)
  • A_BF_BPB ENDS

Members

Note: This member will always be zero in a FAT32 BPB. Use the values from A_BF_BPB_BigSectorsPerFat and A_BF_BPB_BigSectorsPerFatHi for FAT32 media.

Value Description
BGBPB_F_ActiveFATMsk (000Fh) Mask for low four bits.
BGBPB_F_NoFATMirror (0080h) Mask indicating FAT mirroring state. If set, FAT mirroring is disabled. If clear, FAT mirroring is enabled.

*Bits 4-6 and 8-15 are reserved.

BIGFATBOOTFSINFO (FAT32)

Contains information about the file system on a FAT32 volume. This structure is implemented in Windows OEM Service Release 2 and later.

Members