mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-23 19:27:03 -04:00
[format] add large FAT32 support
* Based on fat32format from Ridgecrop Consultants Ltd: http://www.ridgecrop.demon.co.uk/index.htm?fat32format.htm * Initial implementation by Tom Ehlert of DriveSnapshot: http://www.drivesnapshot.de/en/index.htm * Closes #101
This commit is contained in:
parent
8dc5429d9f
commit
22800bb8a5
6 changed files with 473 additions and 29 deletions
51
src/format.h
51
src/format.h
|
@ -1,6 +1,7 @@
|
|||
/*
|
||||
* Rufus: The Reliable USB Formatting Utility
|
||||
* Formatting function calls
|
||||
* Copyright (c) 2007-2009 Tom Thornhill/Ridgecrop
|
||||
* Copyright (c) 2011-2012 Pete Batard <pete@akeo.ie>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
|
@ -103,3 +104,53 @@ typedef BOOLEAN (WINAPI* EnableVolumeCompression_t)(
|
|||
WCHAR* DriveRoot,
|
||||
ULONG CompressionFlags // FILE_SYSTEM_PROP_FLAG
|
||||
);
|
||||
|
||||
/* Large FAT32 */
|
||||
#pragma pack(push, 1)
|
||||
typedef struct tagFAT_BOOTSECTOR32
|
||||
{
|
||||
// Common fields.
|
||||
BYTE sJmpBoot[3];
|
||||
BYTE sOEMName[8];
|
||||
WORD wBytsPerSec;
|
||||
BYTE bSecPerClus;
|
||||
WORD wRsvdSecCnt;
|
||||
BYTE bNumFATs;
|
||||
WORD wRootEntCnt;
|
||||
WORD wTotSec16; // if zero, use dTotSec32 instead
|
||||
BYTE bMedia;
|
||||
WORD wFATSz16;
|
||||
WORD wSecPerTrk;
|
||||
WORD wNumHeads;
|
||||
DWORD dHiddSec;
|
||||
DWORD dTotSec32;
|
||||
// Fat 32/16 only
|
||||
DWORD dFATSz32;
|
||||
WORD wExtFlags;
|
||||
WORD wFSVer;
|
||||
DWORD dRootClus;
|
||||
WORD wFSInfo;
|
||||
WORD wBkBootSec;
|
||||
BYTE Reserved[12];
|
||||
BYTE bDrvNum;
|
||||
BYTE Reserved1;
|
||||
BYTE bBootSig; // == 0x29 if next three fields are ok
|
||||
DWORD dBS_VolID;
|
||||
BYTE sVolLab[11];
|
||||
BYTE sBS_FilSysType[8];
|
||||
} FAT_BOOTSECTOR32;
|
||||
|
||||
typedef struct {
|
||||
DWORD dLeadSig; // 0x41615252
|
||||
BYTE sReserved1[480]; // zeros
|
||||
DWORD dStrucSig; // 0x61417272
|
||||
DWORD dFree_Count; // 0xFFFFFFFF
|
||||
DWORD dNxt_Free; // 0xFFFFFFFF
|
||||
BYTE sReserved2[12]; // zeros
|
||||
DWORD dTrailSig; // 0xAA550000
|
||||
} FAT_FSINFO;
|
||||
#pragma pack(pop)
|
||||
|
||||
#define die(msg, err) do { uprintf(msg); \
|
||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|err; \
|
||||
goto out; } while(0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue