Start working on FAT formatter

This commit is contained in:
Pdawg11239
2025-03-16 13:51:50 -04:00
parent 642fd5e1ed
commit 87cf731f0b
6 changed files with 127 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
using System.Runtime.InteropServices;
namespace BadBuilder.Formatter
{
[StructLayout(LayoutKind.Sequential, Pack = 1)]
internal struct FAT32BootSector
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] JumpCode;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] OEMName;
public ushort BytesPerSector;
public byte SectorsPerCluster;
public ushort ReservedSectorCount;
public byte NumberOfFATs;
public ushort MaxRootEntries; // Unused in FAT32
public ushort TotalSectors16; // If 0, use TotalSectors
public byte MediaDescriptor;
public ushort SectorsPerFAT16; // Unused in FAT32
public ushort SectorsPerTrack;
public ushort NumberOfHeads;
public uint HiddenSectors;
public uint TotalSectors; // Total sectors (if TotalSectors16 is 0)
// FAT32-specific fields
public uint SectorsPerFAT;
public ushort FATFlags;
public ushort FileSystemVersion;
public uint RootCluster;
public ushort FSInfoSector;
public ushort BackupBootSector;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 12)]
public byte[] Reserved;
public byte DriveNumber;
public byte Reserved1;
public byte BootSignature;
public uint VolumeID;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 11)]
public byte[] VolumeLabel;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public byte[] FileSystemType;
}
}