mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	
							parent
							
								
									3e4b03a116
								
							
						
					
					
						commit
						a1d605f206
					
				
					 2 changed files with 32 additions and 8 deletions
				
			
		|  | @ -27,11 +27,13 @@ | |||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <stdlib.h> | ||||
| #include <assert.h> | ||||
| 
 | ||||
| #include "rufus.h" | ||||
| #include "file.h" | ||||
| #include "drive.h" | ||||
| #include "format.h" | ||||
| #include "missing.h" | ||||
| #include "resource.h" | ||||
| #include "msapi_utf8.h" | ||||
| #include "localization.h" | ||||
|  | @ -251,6 +253,27 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS | |||
| 		die("This drive is too big for FAT32 - max 2TB supported", APPERR(ERROR_INVALID_VOLUME_SIZE)); | ||||
| 	} | ||||
| 
 | ||||
| 	// Set default cluster size
 | ||||
| 	// https://support.microsoft.com/en-us/help/140365/default-cluster-size-for-ntfs-fat-and-exfat
 | ||||
| 	if (ClusterSize == 0) { | ||||
| 		if (piDrive.PartitionLength.QuadPart < 64 * MB) | ||||
| 			ClusterSize = 512; | ||||
| 		else if (piDrive.PartitionLength.QuadPart < 128 * MB) | ||||
| 			ClusterSize = 1 * KB; | ||||
| 		else if (piDrive.PartitionLength.QuadPart < 256 * MB) | ||||
| 			ClusterSize = 2 * KB; | ||||
| 		else if (piDrive.PartitionLength.QuadPart < 8 * GB) | ||||
| 			ClusterSize = 4 * KB; | ||||
| 		else if (piDrive.PartitionLength.QuadPart < 16 * GB) | ||||
| 			ClusterSize = 8 * KB; | ||||
| 		else if (piDrive.PartitionLength.QuadPart < 32 * GB) | ||||
| 			ClusterSize = 16 * KB; | ||||
| 		else if (piDrive.PartitionLength.QuadPart < 2 * TB) | ||||
| 			ClusterSize = 32 * KB; | ||||
| 		else | ||||
| 			ClusterSize = 64 * KB; | ||||
| 	} | ||||
| 
 | ||||
| 	// coverity[tainted_data]
 | ||||
| 	pFAT32BootSect = (FAT_BOOTSECTOR32*)calloc(BytesPerSect, 1); | ||||
| 	pFAT32FsInfo = (FAT_FSINFO*)calloc(BytesPerSect, 1); | ||||
|  | @ -340,6 +363,7 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS | |||
| 	// RootDir - allocated to cluster2
 | ||||
| 
 | ||||
| 	UserAreaSize = TotalSectors - ReservedSectCount - (NumFATs * FatSize); | ||||
| 	assert(SectorsPerCluster > 0); | ||||
| 	ClusterCount = UserAreaSize / SectorsPerCluster; | ||||
| 
 | ||||
| 	// Sanity check for a cluster count of >2^28, since the upper 4 bits of the cluster values in
 | ||||
|  | @ -367,16 +391,16 @@ BOOL FormatLargeFAT32(DWORD DriveIndex, uint64_t PartitionOffset, DWORD ClusterS | |||
| 
 | ||||
| 	// Now we're committed - print some info first
 | ||||
| 	uprintf("Size : %s %u sectors", SizeToHumanReadable(piDrive.PartitionLength.QuadPart, TRUE, FALSE), TotalSectors); | ||||
| 	uprintf("Cluster size %d bytes, %d Bytes Per Sector", SectorsPerCluster * BytesPerSect, BytesPerSect); | ||||
| 	uprintf("Cluster size %d bytes, %d bytes per sector", SectorsPerCluster * BytesPerSect, BytesPerSect); | ||||
| 	uprintf("Volume ID is %x:%x", VolumeId >> 16, VolumeId & 0xffff); | ||||
| 	uprintf("%d Reserved Sectors, %d Sectors per FAT, %d FATs", ReservedSectCount, FatSize, NumFATs); | ||||
| 	uprintf("%d Reserved sectors, %d sectors per FAT, %d FATs", ReservedSectCount, FatSize, NumFATs); | ||||
| 	uprintf("%d Total clusters", ClusterCount); | ||||
| 
 | ||||
| 	// Fix up the FSInfo sector
 | ||||
| 	pFAT32FsInfo->dFree_Count = (UserAreaSize / SectorsPerCluster) - 1; | ||||
| 	pFAT32FsInfo->dNxt_Free = 3; // clusters 0-1 reserved, we used cluster 2 for the root dir
 | ||||
| 
 | ||||
| 	uprintf("%d Free Clusters", pFAT32FsInfo->dFree_Count); | ||||
| 	uprintf("%d Free clusters", pFAT32FsInfo->dFree_Count); | ||||
| 	// Work out the Cluster count
 | ||||
| 
 | ||||
| 	// First zero out ReservedSect + FatSize * NumFats + SectorsPerCluster
 | ||||
|  |  | |||
							
								
								
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | |||
| IDD_DIALOG DIALOGEX 12, 12, 232, 326 | ||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||
| EXSTYLE WS_EX_ACCEPTFILES | ||||
| CAPTION "Rufus 3.11.1674" | ||||
| CAPTION "Rufus 3.11.1675" | ||||
| FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | ||||
| BEGIN | ||||
|     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP | ||||
|  | @ -395,8 +395,8 @@ END | |||
| // | ||||
| 
 | ||||
| VS_VERSION_INFO VERSIONINFO | ||||
|  FILEVERSION 3,11,1674,0 | ||||
|  PRODUCTVERSION 3,11,1674,0 | ||||
|  FILEVERSION 3,11,1675,0 | ||||
|  PRODUCTVERSION 3,11,1675,0 | ||||
|  FILEFLAGSMASK 0x3fL | ||||
| #ifdef _DEBUG | ||||
|  FILEFLAGS 0x1L | ||||
|  | @ -414,13 +414,13 @@ BEGIN | |||
|             VALUE "Comments", "https://rufus.ie" | ||||
|             VALUE "CompanyName", "Akeo Consulting" | ||||
|             VALUE "FileDescription", "Rufus" | ||||
|             VALUE "FileVersion", "3.11.1674" | ||||
|             VALUE "FileVersion", "3.11.1675" | ||||
|             VALUE "InternalName", "Rufus" | ||||
|             VALUE "LegalCopyright", "© 2011-2020 Pete Batard (GPL v3)" | ||||
|             VALUE "LegalTrademarks", "https://www.gnu.org/licenses/gpl-3.0.html" | ||||
|             VALUE "OriginalFilename", "rufus-3.11.exe" | ||||
|             VALUE "ProductName", "Rufus" | ||||
|             VALUE "ProductVersion", "3.11.1674" | ||||
|             VALUE "ProductVersion", "3.11.1675" | ||||
|         END | ||||
|     END | ||||
|     BLOCK "VarFileInfo" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue