49 lines
1.6 KiB
C#
49 lines
1.6 KiB
C#
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;
|
|
}
|
|
} |