mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-22 10:55:19 -04:00
[core] clean up the RUFUS_DRIVE_INFO struct
* Remove the duplication of DISK_GEOMETRY to keep only the variables we actually use * Also set rufus-next to 2.10
This commit is contained in:
parent
258a4f7ca0
commit
81673ade26
8 changed files with 75 additions and 72 deletions
20
configure
vendored
20
configure
vendored
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for rufus 2.9.
|
# Generated by GNU Autoconf 2.69 for rufus 2.10.
|
||||||
#
|
#
|
||||||
# Report bugs to <https://github.com/pbatard/rufus/issues>.
|
# Report bugs to <https://github.com/pbatard/rufus/issues>.
|
||||||
#
|
#
|
||||||
|
@ -580,8 +580,8 @@ MAKEFLAGS=
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='rufus'
|
PACKAGE_NAME='rufus'
|
||||||
PACKAGE_TARNAME='rufus'
|
PACKAGE_TARNAME='rufus'
|
||||||
PACKAGE_VERSION='2.9'
|
PACKAGE_VERSION='2.10'
|
||||||
PACKAGE_STRING='rufus 2.9'
|
PACKAGE_STRING='rufus 2.10'
|
||||||
PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues'
|
PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues'
|
||||||
PACKAGE_URL='http://rufus.akeo.ie'
|
PACKAGE_URL='http://rufus.akeo.ie'
|
||||||
|
|
||||||
|
@ -1228,7 +1228,7 @@ if test "$ac_init_help" = "long"; then
|
||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures rufus 2.9 to adapt to many kinds of systems.
|
\`configure' configures rufus 2.10 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1294,7 +1294,7 @@ fi
|
||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of rufus 2.9:";;
|
short | recursive ) echo "Configuration of rufus 2.10:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1385,7 +1385,7 @@ fi
|
||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
rufus configure 2.9
|
rufus configure 2.10
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
@ -1440,7 +1440,7 @@ cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by rufus $as_me 2.9, which was
|
It was created by rufus $as_me 2.10, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
|
@ -2303,7 +2303,7 @@ fi
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='rufus'
|
PACKAGE='rufus'
|
||||||
VERSION='2.9'
|
VERSION='2.10'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
@ -4482,7 +4482,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by rufus $as_me 2.9, which was
|
This file was extended by rufus $as_me 2.10, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -4536,7 +4536,7 @@ _ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
rufus config.status 2.9
|
rufus config.status 2.10
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
AC_INIT([rufus], [2.9], [https://github.com/pbatard/rufus/issues], [rufus], [http://rufus.akeo.ie])
|
AC_INIT([rufus], [2.10], [https://github.com/pbatard/rufus/issues], [rufus], [http://rufus.akeo.ie])
|
||||||
AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies])
|
AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies])
|
||||||
AC_CONFIG_SRCDIR([src/rufus.c])
|
AC_CONFIG_SRCDIR([src/rufus.c])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
|
|
45
src/drive.c
45
src/drive.c
|
@ -592,7 +592,7 @@ BOOL AnalyzeMBR(HANDLE hPhysicalDrive, const char* TargetName)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
fake_fd._handle = (char*)hPhysicalDrive;
|
fake_fd._handle = (char*)hPhysicalDrive;
|
||||||
set_bytes_per_sector(SelectedDrive.Geometry.BytesPerSector);
|
set_bytes_per_sector(SelectedDrive.SectorSize);
|
||||||
|
|
||||||
if (!is_br(fp)) {
|
if (!is_br(fp)) {
|
||||||
uprintf("%s does not have an x86 %s\n", TargetName, mbr_name);
|
uprintf("%s does not have an x86 %s\n", TargetName, mbr_name);
|
||||||
|
@ -628,7 +628,7 @@ BOOL AnalyzePBR(HANDLE hLogicalVolume)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
fake_fd._handle = (char*)hLogicalVolume;
|
fake_fd._handle = (char*)hLogicalVolume;
|
||||||
set_bytes_per_sector(SelectedDrive.Geometry.BytesPerSector);
|
set_bytes_per_sector(SelectedDrive.SectorSize);
|
||||||
|
|
||||||
if (!is_br(fp)) {
|
if (!is_br(fp)) {
|
||||||
uprintf("Volume does not have an x86 %s\n", pbr_name);
|
uprintf("Volume does not have an x86 %s\n", pbr_name);
|
||||||
|
@ -690,15 +690,18 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
|
||||||
safe_closehandle(hPhysical);
|
safe_closehandle(hPhysical);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (DiskGeometry->Geometry.BytesPerSector < 512) {
|
|
||||||
suprintf("Warning: Drive 0x%02x reports a sector size of %d - Correcting to 512 bytes.\n",
|
|
||||||
DriveIndex, DiskGeometry->Geometry.BytesPerSector);
|
|
||||||
DiskGeometry->Geometry.BytesPerSector = 512;
|
|
||||||
}
|
|
||||||
SelectedDrive.DiskSize = DiskGeometry->DiskSize.QuadPart;
|
SelectedDrive.DiskSize = DiskGeometry->DiskSize.QuadPart;
|
||||||
memcpy(&SelectedDrive.Geometry, &DiskGeometry->Geometry, sizeof(DISK_GEOMETRY));
|
SelectedDrive.SectorSize = DiskGeometry->Geometry.BytesPerSector;
|
||||||
suprintf("Disk type: %s, Sector Size: %d bytes\n", (DiskGeometry->Geometry.MediaType == FixedMedia)?"Fixed":"Removable",
|
if (SelectedDrive.SectorSize < 512) {
|
||||||
DiskGeometry->Geometry.BytesPerSector);
|
suprintf("Warning: Drive 0x%02x reports a sector size of %d - Correcting to 512 bytes.\n",
|
||||||
|
DriveIndex, SelectedDrive.SectorSize);
|
||||||
|
SelectedDrive.SectorSize = 512;
|
||||||
|
}
|
||||||
|
SelectedDrive.SectorsPerTrack = DiskGeometry->Geometry.SectorsPerTrack;
|
||||||
|
SelectedDrive.MediaType = DiskGeometry->Geometry.MediaType;
|
||||||
|
|
||||||
|
suprintf("Disk type: %s, Sector Size: %d bytes\n", (SelectedDrive.MediaType == FixedMedia)?"Fixed":"Removable",
|
||||||
|
SelectedDrive.SectorSize);
|
||||||
suprintf("Cylinders: %" PRIi64 ", TracksPerCylinder: %d, SectorsPerTrack: %d\n",
|
suprintf("Cylinders: %" PRIi64 ", TracksPerCylinder: %d, SectorsPerTrack: %d\n",
|
||||||
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder, DiskGeometry->Geometry.SectorsPerTrack);
|
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder, DiskGeometry->Geometry.SectorsPerTrack);
|
||||||
|
|
||||||
|
@ -1031,7 +1034,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
BOOL r;
|
BOOL r;
|
||||||
DWORD i, size, bufsize, pn = 0;
|
DWORD i, size, bufsize, pn = 0;
|
||||||
LONGLONG main_part_size_in_sectors, extra_part_size_in_tracks = 0, ms_efi_size;
|
LONGLONG main_part_size_in_sectors, extra_part_size_in_tracks = 0, ms_efi_size;
|
||||||
const LONGLONG bytes_per_track = ((LONGLONG)SelectedDrive.Geometry.SectorsPerTrack) * SelectedDrive.Geometry.BytesPerSector;
|
const LONGLONG bytes_per_track = ((LONGLONG)SelectedDrive.SectorsPerTrack) * SelectedDrive.SectorSize;
|
||||||
|
|
||||||
PrintInfoDebug(0, MSG_238, PartitionTypeName[partition_style]);
|
PrintInfoDebug(0, MSG_238, PartitionTypeName[partition_style]);
|
||||||
|
|
||||||
|
@ -1078,7 +1081,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
// Set our main data partition
|
// Set our main data partition
|
||||||
main_part_size_in_sectors = (SelectedDrive.DiskSize - DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart) /
|
main_part_size_in_sectors = (SelectedDrive.DiskSize - DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart) /
|
||||||
// Need 33 sectors at the end for secondary GPT
|
// Need 33 sectors at the end for secondary GPT
|
||||||
SelectedDrive.Geometry.BytesPerSector - ((partition_style == PARTITION_STYLE_GPT)?33:0);
|
SelectedDrive.SectorSize - ((partition_style == PARTITION_STYLE_GPT)?33:0);
|
||||||
if (main_part_size_in_sectors <= 0)
|
if (main_part_size_in_sectors <= 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
@ -1088,9 +1091,9 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
if (extra_partitions & XP_EFI) {
|
if (extra_partitions & XP_EFI) {
|
||||||
// The size of the EFI partition depends on the minimum size we're able to format in FAT32,
|
// The size of the EFI partition depends on the minimum size we're able to format in FAT32,
|
||||||
// which in turn depends on the cluster size used, which in turn depends on the disk sector size.
|
// which in turn depends on the cluster size used, which in turn depends on the disk sector size.
|
||||||
if (SelectedDrive.Geometry.BytesPerSector <= 1024)
|
if (SelectedDrive.SectorSize <= 1024)
|
||||||
ms_efi_size = 100*MB;
|
ms_efi_size = 100*MB;
|
||||||
else if (SelectedDrive.Geometry.BytesPerSector <= 4096)
|
else if (SelectedDrive.SectorSize <= 4096)
|
||||||
ms_efi_size = 300*MB;
|
ms_efi_size = 300*MB;
|
||||||
else
|
else
|
||||||
ms_efi_size = 1200*MB; // That'll teach you to have a nonstandard disk!
|
ms_efi_size = 1200*MB; // That'll teach you to have a nonstandard disk!
|
||||||
|
@ -1101,12 +1104,12 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
extra_part_size_in_tracks = 1; // One track for the extra partition
|
extra_part_size_in_tracks = 1; // One track for the extra partition
|
||||||
uprintf("Reserved %" PRIi64" tracks (%s) for extra partition", extra_part_size_in_tracks,
|
uprintf("Reserved %" PRIi64" tracks (%s) for extra partition", extra_part_size_in_tracks,
|
||||||
SizeToHumanReadable(extra_part_size_in_tracks * bytes_per_track, TRUE, FALSE));
|
SizeToHumanReadable(extra_part_size_in_tracks * bytes_per_track, TRUE, FALSE));
|
||||||
main_part_size_in_sectors = ((main_part_size_in_sectors / SelectedDrive.Geometry.SectorsPerTrack) -
|
main_part_size_in_sectors = ((main_part_size_in_sectors / SelectedDrive.SectorsPerTrack) -
|
||||||
extra_part_size_in_tracks) * SelectedDrive.Geometry.SectorsPerTrack;
|
extra_part_size_in_tracks) * SelectedDrive.SectorsPerTrack;
|
||||||
if (main_part_size_in_sectors <= 0)
|
if (main_part_size_in_sectors <= 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = main_part_size_in_sectors * SelectedDrive.Geometry.BytesPerSector;
|
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = main_part_size_in_sectors * SelectedDrive.SectorSize;
|
||||||
if (partition_style == PARTITION_STYLE_MBR) {
|
if (partition_style == PARTITION_STYLE_MBR) {
|
||||||
DriveLayoutEx.PartitionEntry[pn].Mbr.BootIndicator = IsChecked(IDC_BOOT);
|
DriveLayoutEx.PartitionEntry[pn].Mbr.BootIndicator = IsChecked(IDC_BOOT);
|
||||||
switch (file_system) {
|
switch (file_system) {
|
||||||
|
@ -1139,7 +1142,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = DriveLayoutEx.PartitionEntry[pn-1].StartingOffset.QuadPart +
|
DriveLayoutEx.PartitionEntry[pn].StartingOffset.QuadPart = DriveLayoutEx.PartitionEntry[pn-1].StartingOffset.QuadPart +
|
||||||
DriveLayoutEx.PartitionEntry[pn-1].PartitionLength.QuadPart;
|
DriveLayoutEx.PartitionEntry[pn-1].PartitionLength.QuadPart;
|
||||||
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = (extra_partitions & XP_UEFI_NTFS)?uefi_ntfs_size:
|
DriveLayoutEx.PartitionEntry[pn].PartitionLength.QuadPart = (extra_partitions & XP_UEFI_NTFS)?uefi_ntfs_size:
|
||||||
extra_part_size_in_tracks * SelectedDrive.Geometry.SectorsPerTrack * SelectedDrive.Geometry.BytesPerSector;
|
extra_part_size_in_tracks * SelectedDrive.SectorsPerTrack * SelectedDrive.SectorSize;
|
||||||
if (partition_style == PARTITION_STYLE_GPT) {
|
if (partition_style == PARTITION_STYLE_GPT) {
|
||||||
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = (extra_partitions & XP_UEFI_NTFS)?
|
DriveLayoutEx.PartitionEntry[pn].Gpt.PartitionType = (extra_partitions & XP_UEFI_NTFS)?
|
||||||
PARTITION_BASIC_DATA_GUID:PARTITION_SYSTEM_GUID;
|
PARTITION_BASIC_DATA_GUID:PARTITION_SYSTEM_GUID;
|
||||||
|
@ -1149,7 +1152,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = (extra_partitions & XP_UEFI_NTFS)?0xef:RUFUS_EXTRA_PARTITION_TYPE;
|
DriveLayoutEx.PartitionEntry[pn].Mbr.PartitionType = (extra_partitions & XP_UEFI_NTFS)?0xef:RUFUS_EXTRA_PARTITION_TYPE;
|
||||||
if (extra_partitions & XP_COMPAT)
|
if (extra_partitions & XP_COMPAT)
|
||||||
// Set the one track compatibility partition to be all hidden sectors
|
// Set the one track compatibility partition to be all hidden sectors
|
||||||
DriveLayoutEx.PartitionEntry[pn].Mbr.HiddenSectors = SelectedDrive.Geometry.SectorsPerTrack;
|
DriveLayoutEx.PartitionEntry[pn].Mbr.HiddenSectors = SelectedDrive.SectorsPerTrack;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We need to write the UEFI:NTFS partition before we refresh the disk
|
// We need to write the UEFI:NTFS partition before we refresh the disk
|
||||||
|
@ -1207,8 +1210,8 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
DriveLayoutEx.PartitionStyle = PARTITION_STYLE_GPT;
|
DriveLayoutEx.PartitionStyle = PARTITION_STYLE_GPT;
|
||||||
DriveLayoutEx.PartitionCount = pn;
|
DriveLayoutEx.PartitionCount = pn;
|
||||||
// At the very least, a GPT disk has 34 reserved sectors at the beginning and 33 at the end.
|
// At the very least, a GPT disk has 34 reserved sectors at the beginning and 33 at the end.
|
||||||
DriveLayoutEx.Type.Gpt.StartingUsableOffset.QuadPart = 34 * SelectedDrive.Geometry.BytesPerSector;
|
DriveLayoutEx.Type.Gpt.StartingUsableOffset.QuadPart = 34 * SelectedDrive.SectorSize;
|
||||||
DriveLayoutEx.Type.Gpt.UsableLength.QuadPart = SelectedDrive.DiskSize - (34+33) * SelectedDrive.Geometry.BytesPerSector;
|
DriveLayoutEx.Type.Gpt.UsableLength.QuadPart = SelectedDrive.DiskSize - (34+33) * SelectedDrive.SectorSize;
|
||||||
DriveLayoutEx.Type.Gpt.MaxPartitionCount = MAX_GPT_PARTITIONS;
|
DriveLayoutEx.Type.Gpt.MaxPartitionCount = MAX_GPT_PARTITIONS;
|
||||||
DriveLayoutEx.Type.Gpt.DiskId = CreateDisk.Gpt.DiskId;
|
DriveLayoutEx.Type.Gpt.DiskId = CreateDisk.Gpt.DiskId;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -57,14 +57,16 @@ static __inline BOOL UnlockDrive(HANDLE hDrive) {
|
||||||
|
|
||||||
/* Current drive info */
|
/* Current drive info */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
DWORD DeviceNumber;
|
|
||||||
LONGLONG DiskSize;
|
LONGLONG DiskSize;
|
||||||
DISK_GEOMETRY Geometry;
|
DWORD DeviceNumber;
|
||||||
|
DWORD SectorsPerTrack;
|
||||||
|
DWORD SectorSize;
|
||||||
DWORD FirstSector;
|
DWORD FirstSector;
|
||||||
char proposed_label[16];
|
MEDIA_TYPE MediaType;
|
||||||
int PartitionType;
|
int PartitionType;
|
||||||
int nPartitions; // number of partitions we actually care about
|
int nPartitions; // number of partitions we actually care about
|
||||||
int FSType;
|
int FSType;
|
||||||
|
char proposed_label[16];
|
||||||
BOOL has_protective_mbr;
|
BOOL has_protective_mbr;
|
||||||
BOOL has_mbr_uefi_marker;
|
BOOL has_mbr_uefi_marker;
|
||||||
struct {
|
struct {
|
||||||
|
|
48
src/format.c
48
src/format.c
|
@ -747,7 +747,7 @@ static BOOL FormatDrive(DWORD DriveIndex)
|
||||||
fs_index = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
fs_index = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||||
|
|
||||||
uprintf("%s format was selected\n", IsChecked(IDC_QUICKFORMAT)?"Quick":"Slow");
|
uprintf("%s format was selected\n", IsChecked(IDC_QUICKFORMAT)?"Quick":"Slow");
|
||||||
pfFormatEx(wVolumeName, SelectedDrive.Geometry.MediaType, wFSType, wLabel,
|
pfFormatEx(wVolumeName, SelectedDrive.MediaType, wFSType, wLabel,
|
||||||
IsChecked(IDC_QUICKFORMAT), ulClusterSize, FormatExCallback);
|
IsChecked(IDC_QUICKFORMAT), ulClusterSize, FormatExCallback);
|
||||||
|
|
||||||
if ((fs == FS_NTFS) && (enable_ntfs_compression) && (pfEnableVolumeCompression != NULL)) {
|
if ((fs == FS_NTFS) && (enable_ntfs_compression) && (pfEnableVolumeCompression != NULL)) {
|
||||||
|
@ -859,14 +859,14 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive)
|
||||||
|
|
||||||
// FormatEx rewrites the MBR and removes the LBA attribute of FAT16
|
// FormatEx rewrites the MBR and removes the LBA attribute of FAT16
|
||||||
// and FAT32 partitions - we need to correct this in the MBR
|
// and FAT32 partitions - we need to correct this in the MBR
|
||||||
buf = (unsigned char*)malloc(SelectedDrive.Geometry.BytesPerSector);
|
buf = (unsigned char*)malloc(SelectedDrive.SectorSize);
|
||||||
if (buf == NULL) {
|
if (buf == NULL) {
|
||||||
uprintf("Could not allocate memory for MBR");
|
uprintf("Could not allocate memory for MBR");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_ENOUGH_MEMORY;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_ENOUGH_MEMORY;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!read_sectors(hPhysicalDrive, SelectedDrive.Geometry.BytesPerSector, 0, 1, buf)) {
|
if (!read_sectors(hPhysicalDrive, SelectedDrive.SectorSize, 0, 1, buf)) {
|
||||||
uprintf("Could not read MBR\n");
|
uprintf("Could not read MBR\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_READ_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_READ_FAULT;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -897,14 +897,14 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive)
|
||||||
uprintf("Set bootable USB partition as 0x%02X\n", buf[0x1be]);
|
uprintf("Set bootable USB partition as 0x%02X\n", buf[0x1be]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!write_sectors(hPhysicalDrive, SelectedDrive.Geometry.BytesPerSector, 0, 1, buf)) {
|
if (!write_sectors(hPhysicalDrive, SelectedDrive.SectorSize, 0, 1, buf)) {
|
||||||
uprintf("Could not write MBR\n");
|
uprintf("Could not write MBR\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
fake_fd._handle = (char*)hPhysicalDrive;
|
fake_fd._handle = (char*)hPhysicalDrive;
|
||||||
set_bytes_per_sector(SelectedDrive.Geometry.BytesPerSector);
|
set_bytes_per_sector(SelectedDrive.SectorSize);
|
||||||
|
|
||||||
// What follows is really a case statement with complex conditions listed
|
// What follows is really a case statement with complex conditions listed
|
||||||
// by order of preference
|
// by order of preference
|
||||||
|
@ -987,10 +987,10 @@ static BOOL WriteSBR(HANDLE hPhysicalDrive)
|
||||||
FILE* fp = (FILE*)&fake_fd;
|
FILE* fp = (FILE*)&fake_fd;
|
||||||
|
|
||||||
fake_fd._handle = (char*)hPhysicalDrive;
|
fake_fd._handle = (char*)hPhysicalDrive;
|
||||||
set_bytes_per_sector(SelectedDrive.Geometry.BytesPerSector);
|
set_bytes_per_sector(SelectedDrive.SectorSize);
|
||||||
// Ensure that we have sufficient space for the SBR
|
// Ensure that we have sufficient space for the SBR
|
||||||
max_size = IsChecked(IDC_EXTRA_PARTITION) ?
|
max_size = IsChecked(IDC_EXTRA_PARTITION) ?
|
||||||
(DWORD)(SelectedDrive.Geometry.BytesPerSector * SelectedDrive.Geometry.SectorsPerTrack) : 1*MB;
|
(DWORD)(SelectedDrive.SectorsPerTrack * SelectedDrive.SectorSize) : 1*MB;
|
||||||
max_size -= mbr_size;
|
max_size -= mbr_size;
|
||||||
// Syslinux has precedence over Grub
|
// Syslinux has precedence over Grub
|
||||||
if ((bt == BT_ISO) && (!HAS_SYSLINUX(img_report))) {
|
if ((bt == BT_ISO) && (!HAS_SYSLINUX(img_report))) {
|
||||||
|
@ -1059,7 +1059,7 @@ static BOOL WritePBR(HANDLE hLogicalVolume)
|
||||||
const char* using_msg = "Using %s %s partition boot record\n";
|
const char* using_msg = "Using %s %s partition boot record\n";
|
||||||
|
|
||||||
fake_fd._handle = (char*)hLogicalVolume;
|
fake_fd._handle = (char*)hLogicalVolume;
|
||||||
set_bytes_per_sector(SelectedDrive.Geometry.BytesPerSector);
|
set_bytes_per_sector(SelectedDrive.SectorSize);
|
||||||
|
|
||||||
switch (ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem))) {
|
switch (ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem))) {
|
||||||
case FS_FAT16:
|
case FS_FAT16:
|
||||||
|
@ -1103,7 +1103,7 @@ static BOOL WritePBR(HANDLE hLogicalVolume)
|
||||||
// Disk Drive ID needs to be corrected on XP
|
// Disk Drive ID needs to be corrected on XP
|
||||||
if (!write_partition_physical_disk_drive_id_fat32(fp))
|
if (!write_partition_physical_disk_drive_id_fat32(fp))
|
||||||
break;
|
break;
|
||||||
fake_fd._offset += 6 * SelectedDrive.Geometry.BytesPerSector;
|
fake_fd._offset += 6 * SelectedDrive.SectorSize;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
case FS_NTFS:
|
case FS_NTFS:
|
||||||
|
@ -1281,7 +1281,7 @@ static BOOL SetupWinToGo(const char* drive_name, BOOL use_ms_efi)
|
||||||
|
|
||||||
uprintf("Windows To Go mode selected");
|
uprintf("Windows To Go mode selected");
|
||||||
// Additional sanity checks
|
// Additional sanity checks
|
||||||
if ( ((use_ms_efi) && (SelectedDrive.Geometry.MediaType != FixedMedia)) ||
|
if ( ((use_ms_efi) && (SelectedDrive.MediaType != FixedMedia)) ||
|
||||||
((nWindowsVersion < WINDOWS_8) || ((WimExtractCheck() & 4) == 0)) ) {
|
((nWindowsVersion < WINDOWS_8) || ((WimExtractCheck() & 4) == 0)) ) {
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_SUPPORTED;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_NOT_SUPPORTED;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -1324,18 +1324,18 @@ static BOOL SetupWinToGo(const char* drive_name, BOOL use_ms_efi)
|
||||||
// According to Ubuntu (https://bugs.launchpad.net/ubuntu/+source/partman-efi/+bug/811485) you want to use FAT32.
|
// According to Ubuntu (https://bugs.launchpad.net/ubuntu/+source/partman-efi/+bug/811485) you want to use FAT32.
|
||||||
// However, you have to be careful that the cluster size needs to be greater or equal to the sector size, which
|
// However, you have to be careful that the cluster size needs to be greater or equal to the sector size, which
|
||||||
// in turn has an impact on the minimum EFI partition size we can create (see ms_efi_size_MB in drive.c)
|
// in turn has an impact on the minimum EFI partition size we can create (see ms_efi_size_MB in drive.c)
|
||||||
if (SelectedDrive.Geometry.BytesPerSector <= 1024)
|
if (SelectedDrive.SectorSize <= 1024)
|
||||||
cluster_size = 1024;
|
cluster_size = 1024;
|
||||||
else if (SelectedDrive.Geometry.BytesPerSector <= 4096)
|
else if (SelectedDrive.SectorSize <= 4096)
|
||||||
cluster_size = 4096;
|
cluster_size = 4096;
|
||||||
else // Go for broke
|
else // Go for broke
|
||||||
cluster_size = (ULONG)SelectedDrive.Geometry.BytesPerSector;
|
cluster_size = (ULONG)SelectedDrive.SectorSize;
|
||||||
fs_index = 1; // FAT32
|
fs_index = 1; // FAT32
|
||||||
task_number = 0;
|
task_number = 0;
|
||||||
wVolumeName[0] = ms_efi[0];
|
wVolumeName[0] = ms_efi[0];
|
||||||
|
|
||||||
// Boy do you *NOT* want to specify a label here, and spend HOURS figuring out why your EFI partition cannot boot...
|
// Boy do you *NOT* want to specify a label here, and spend HOURS figuring out why your EFI partition cannot boot...
|
||||||
pfFormatEx(wVolumeName, SelectedDrive.Geometry.MediaType, L"FAT32", L"", TRUE, cluster_size, FormatExCallback);
|
pfFormatEx(wVolumeName, SelectedDrive.MediaType, L"FAT32", L"", TRUE, cluster_size, FormatExCallback);
|
||||||
if (IS_ERROR(FormatStatus)) {
|
if (IS_ERROR(FormatStatus)) {
|
||||||
uprintf("Failed to format EFI partition");
|
uprintf("Failed to format EFI partition");
|
||||||
AltUnmountVolume(ms_efi);
|
AltUnmountVolume(ms_efi);
|
||||||
|
@ -1460,7 +1460,6 @@ static void update_progress(const uint64_t processed_bytes)
|
||||||
/* Write an image file or zero a drive */
|
/* Write an image file or zero a drive */
|
||||||
static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage)
|
static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage)
|
||||||
{
|
{
|
||||||
const DWORD SectorSize = SelectedDrive.Geometry.BytesPerSector;
|
|
||||||
BOOL s, ret = FALSE;
|
BOOL s, ret = FALSE;
|
||||||
LARGE_INTEGER li;
|
LARGE_INTEGER li;
|
||||||
DWORD rSize, wSize, BufSize;
|
DWORD rSize, wSize, BufSize;
|
||||||
|
@ -1482,15 +1481,15 @@ static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage)
|
||||||
} else {
|
} else {
|
||||||
uprintf(hSourceImage?"Writing Image...":"Zeroing drive...");
|
uprintf(hSourceImage?"Writing Image...":"Zeroing drive...");
|
||||||
// Our buffer size must be a multiple of the sector size
|
// Our buffer size must be a multiple of the sector size
|
||||||
BufSize = ((DD_BUFFER_SIZE + SectorSize - 1) / SectorSize) * SectorSize;
|
BufSize = ((DD_BUFFER_SIZE + SelectedDrive.SectorSize - 1) / SelectedDrive.SectorSize) * SelectedDrive.SectorSize;
|
||||||
buffer = (uint8_t*)calloc(BufSize + SectorSize, 1); // +1 sector for align
|
buffer = (uint8_t*)calloc(BufSize + SelectedDrive.SectorSize, 1); // +1 sector for align
|
||||||
if (buffer == NULL) {
|
if (buffer == NULL) {
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_NOT_ENOUGH_MEMORY;
|
FormatStatus = ERROR_SEVERITY_ERROR | FAC(FACILITY_STORAGE) | ERROR_NOT_ENOUGH_MEMORY;
|
||||||
uprintf("could not allocate disk write buffer");
|
uprintf("could not allocate disk write buffer");
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747.aspx does buffer sector alignment
|
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa365747.aspx does buffer sector alignment
|
||||||
aligned_buffer = ((void *)((((uintptr_t)(buffer)) + (SectorSize)-1) & (~(((uintptr_t)(SectorSize)) - 1))));
|
aligned_buffer = ((void *)((((uintptr_t)(buffer)) + (SelectedDrive.SectorSize)-1) & (~(((uintptr_t)(SelectedDrive.SectorSize)) - 1))));
|
||||||
|
|
||||||
// Don't bother trying for something clever, using double buffering overlapped and whatnot:
|
// Don't bother trying for something clever, using double buffering overlapped and whatnot:
|
||||||
// With Windows' default optimizations, sync read + sync write for sequential operations
|
// With Windows' default optimizations, sync read + sync write for sequential operations
|
||||||
|
@ -1520,8 +1519,8 @@ static BOOL WriteDrive(HANDLE hPhysicalDrive, HANDLE hSourceImage)
|
||||||
}
|
}
|
||||||
|
|
||||||
// WriteFile fails unless the size is a multiple of sector size
|
// WriteFile fails unless the size is a multiple of sector size
|
||||||
if (rSize % SectorSize != 0)
|
if (rSize % SelectedDrive.SectorSize != 0)
|
||||||
rSize = ((rSize + SectorSize - 1) / SectorSize) * SectorSize;
|
rSize = ((rSize + SelectedDrive.SectorSize - 1) / SelectedDrive.SectorSize) * SelectedDrive.SectorSize;
|
||||||
for (i = 0; i < WRITE_RETRIES; i++) {
|
for (i = 0; i < WRITE_RETRIES; i++) {
|
||||||
CHECK_FOR_USER_CANCEL;
|
CHECK_FOR_USER_CANCEL;
|
||||||
s = WriteFile(hPhysicalDrive, aligned_buffer, rSize, &wSize, NULL);
|
s = WriteFile(hPhysicalDrive, aligned_buffer, rSize, &wSize, NULL);
|
||||||
|
@ -1565,7 +1564,6 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
{
|
{
|
||||||
int i, r, pt, tt, fs, bt;
|
int i, r, pt, tt, fs, bt;
|
||||||
BOOL ret, use_large_fat32, windows_to_go;
|
BOOL ret, use_large_fat32, windows_to_go;
|
||||||
const DWORD SectorSize = SelectedDrive.Geometry.BytesPerSector;
|
|
||||||
DWORD DriveIndex = (DWORD)(uintptr_t)param;
|
DWORD DriveIndex = (DWORD)(uintptr_t)param;
|
||||||
HANDLE hPhysicalDrive = INVALID_HANDLE_VALUE;
|
HANDLE hPhysicalDrive = INVALID_HANDLE_VALUE;
|
||||||
HANDLE hLogicalVolume = INVALID_HANDLE_VALUE;
|
HANDLE hLogicalVolume = INVALID_HANDLE_VALUE;
|
||||||
|
@ -1677,7 +1675,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
// Note, Microsoft's way of cleaning partitions (IOCTL_DISK_CREATE_DISK, which is what we apply
|
// Note, Microsoft's way of cleaning partitions (IOCTL_DISK_CREATE_DISK, which is what we apply
|
||||||
// in InitializeDisk) is *NOT ENOUGH* to reset a disk and can render it inoperable for partitioning
|
// in InitializeDisk) is *NOT ENOUGH* to reset a disk and can render it inoperable for partitioning
|
||||||
// or formatting under Windows. See https://github.com/pbatard/rufus/issues/759 for details.
|
// or formatting under Windows. See https://github.com/pbatard/rufus/issues/759 for details.
|
||||||
if ((!ClearMBRGPT(hPhysicalDrive, SelectedDrive.DiskSize, SectorSize, FALSE)) || (!InitializeDisk(hPhysicalDrive)) ) {
|
if ((!ClearMBRGPT(hPhysicalDrive, SelectedDrive.DiskSize, SelectedDrive.SectorSize, FALSE)) || (!InitializeDisk(hPhysicalDrive)) ) {
|
||||||
uprintf("Could not reset partitions\n");
|
uprintf("Could not reset partitions\n");
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_PARTITION_FAILURE;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_PARTITION_FAILURE;
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1704,12 +1702,12 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
fflush(log_fd);
|
fflush(log_fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!BadBlocks(hPhysicalDrive, SelectedDrive.DiskSize, SectorSize,
|
if (!BadBlocks(hPhysicalDrive, SelectedDrive.DiskSize, SelectedDrive.SectorSize,
|
||||||
ComboBox_GetCurSel(hNBPasses)+1, &report, log_fd)) {
|
ComboBox_GetCurSel(hNBPasses)+1, &report, log_fd)) {
|
||||||
uprintf("Bad blocks: Check failed.\n");
|
uprintf("Bad blocks: Check failed.\n");
|
||||||
if (!IS_ERROR(FormatStatus))
|
if (!IS_ERROR(FormatStatus))
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_BADBLOCKS_FAILURE);
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_BADBLOCKS_FAILURE);
|
||||||
ClearMBRGPT(hPhysicalDrive, SelectedDrive.DiskSize, SectorSize, FALSE);
|
ClearMBRGPT(hPhysicalDrive, SelectedDrive.DiskSize, SelectedDrive.SectorSize, FALSE);
|
||||||
fclose(log_fd);
|
fclose(log_fd);
|
||||||
_unlink(logfile);
|
_unlink(logfile);
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1741,7 +1739,7 @@ DWORD WINAPI FormatThread(void* param)
|
||||||
|
|
||||||
// Especially after destructive badblocks test, you must zero the MBR/GPT completely
|
// Especially after destructive badblocks test, you must zero the MBR/GPT completely
|
||||||
// before repartitioning. Else, all kind of bad things happen.
|
// before repartitioning. Else, all kind of bad things happen.
|
||||||
if (!ClearMBRGPT(hPhysicalDrive, SelectedDrive.DiskSize, SectorSize, use_large_fat32)) {
|
if (!ClearMBRGPT(hPhysicalDrive, SelectedDrive.DiskSize, SelectedDrive.SectorSize, use_large_fat32)) {
|
||||||
uprintf("unable to zero MBR/GPT\n");
|
uprintf("unable to zero MBR/GPT\n");
|
||||||
if (!IS_ERROR(FormatStatus))
|
if (!IS_ERROR(FormatStatus))
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
|
|
10
src/rufus.c
10
src/rufus.c
|
@ -283,7 +283,7 @@ static BOOL DefineClusterSizes(void)
|
||||||
|
|
||||||
// ReFS (only supported for Windows 8.1 and later and for fixed disks)
|
// ReFS (only supported for Windows 8.1 and later and for fixed disks)
|
||||||
if (SelectedDrive.DiskSize >= 512*MB) {
|
if (SelectedDrive.DiskSize >= 512*MB) {
|
||||||
if ((nWindowsVersion >= WINDOWS_8_1) && (SelectedDrive.Geometry.MediaType == FixedMedia)) {
|
if ((nWindowsVersion >= WINDOWS_8_1) && (SelectedDrive.MediaType == FixedMedia)) {
|
||||||
SelectedDrive.ClusterSize[FS_REFS].Allowed = SINGLE_CLUSTERSIZE_DEFAULT;
|
SelectedDrive.ClusterSize[FS_REFS].Allowed = SINGLE_CLUSTERSIZE_DEFAULT;
|
||||||
SelectedDrive.ClusterSize[FS_REFS].Default = 1;
|
SelectedDrive.ClusterSize[FS_REFS].Default = 1;
|
||||||
}
|
}
|
||||||
|
@ -294,7 +294,7 @@ static BOOL DefineClusterSizes(void)
|
||||||
for (fs=0; fs<FS_MAX; fs++) {
|
for (fs=0; fs<FS_MAX; fs++) {
|
||||||
// Remove all cluster sizes that are below the sector size
|
// Remove all cluster sizes that are below the sector size
|
||||||
if (SelectedDrive.ClusterSize[fs].Allowed != SINGLE_CLUSTERSIZE_DEFAULT) {
|
if (SelectedDrive.ClusterSize[fs].Allowed != SINGLE_CLUSTERSIZE_DEFAULT) {
|
||||||
SelectedDrive.ClusterSize[fs].Allowed &= ~(SelectedDrive.Geometry.BytesPerSector - 1);
|
SelectedDrive.ClusterSize[fs].Allowed &= ~(SelectedDrive.SectorSize - 1);
|
||||||
if ((SelectedDrive.ClusterSize[fs].Default & SelectedDrive.ClusterSize[fs].Allowed) == 0)
|
if ((SelectedDrive.ClusterSize[fs].Default & SelectedDrive.ClusterSize[fs].Allowed) == 0)
|
||||||
// We lost our default => Use rightmost bit to select the new one
|
// We lost our default => Use rightmost bit to select the new one
|
||||||
SelectedDrive.ClusterSize[fs].Default =
|
SelectedDrive.ClusterSize[fs].Default =
|
||||||
|
@ -1284,7 +1284,7 @@ static BOOL BootCheck(void)
|
||||||
// Windows To Go only works for NTFS
|
// Windows To Go only works for NTFS
|
||||||
MessageBoxExU(hMainDialog, lmprintf(MSG_097, "Windows To Go"), lmprintf(MSG_092), MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid);
|
MessageBoxExU(hMainDialog, lmprintf(MSG_097, "Windows To Go"), lmprintf(MSG_092), MB_OK|MB_ICONERROR|MB_IS_RTL, selected_langid);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
} else if (SelectedDrive.Geometry.MediaType != FixedMedia) {
|
} else if (SelectedDrive.MediaType != FixedMedia) {
|
||||||
if ((tt == TT_UEFI) && (pt == PARTITION_STYLE_GPT)) {
|
if ((tt == TT_UEFI) && (pt == PARTITION_STYLE_GPT)) {
|
||||||
// We're screwed since we need access to 2 partitions at the same time to set this, which
|
// We're screwed since we need access to 2 partitions at the same time to set this, which
|
||||||
// Windows can't do. Cue in Arthur's Theme: "♫ I know it's stupid... but it's true. ♫"
|
// Windows can't do. Cue in Arthur's Theme: "♫ I know it's stupid... but it's true. ♫"
|
||||||
|
@ -2498,8 +2498,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA
|
||||||
zero_drive = FALSE;
|
zero_drive = FALSE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if ((!zero_drive) && (IsChecked(IDC_BOOT)) && (SelectedDrive.Geometry.BytesPerSector != 512) &&
|
if ((!zero_drive) && (IsChecked(IDC_BOOT)) && (SelectedDrive.SectorSize != 512) &&
|
||||||
(MessageBoxExU(hMainDialog, lmprintf(MSG_196, SelectedDrive.Geometry.BytesPerSector),
|
(MessageBoxExU(hMainDialog, lmprintf(MSG_196, SelectedDrive.SectorSize),
|
||||||
lmprintf(MSG_197), MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL, selected_langid) == IDCANCEL)) {
|
lmprintf(MSG_197), MB_OKCANCEL|MB_ICONWARNING|MB_IS_RTL, selected_langid) == IDCANCEL)) {
|
||||||
format_op_in_progress = FALSE;
|
format_op_in_progress = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_ACCEPTFILES
|
EXSTYLE WS_EX_ACCEPTFILES
|
||||||
CAPTION "Rufus 2.9.936"
|
CAPTION "Rufus 2.10.937"
|
||||||
FONT 8, "Segoe UI Symbol", 400, 0, 0x0
|
FONT 8, "Segoe UI Symbol", 400, 0, 0x0
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
||||||
|
@ -320,8 +320,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,9,936,0
|
FILEVERSION 2,10,937,0
|
||||||
PRODUCTVERSION 2,9,936,0
|
PRODUCTVERSION 2,10,937,0
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -338,13 +338,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "2.9.936"
|
VALUE "FileVersion", "2.10.937"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2016 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2016 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||||
VALUE "OriginalFilename", "rufus.exe"
|
VALUE "OriginalFilename", "rufus.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "2.9.936"
|
VALUE "ProductVersion", "2.10.937"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -113,10 +113,10 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
|
||||||
|
|
||||||
// 4K sector size workaround
|
// 4K sector size workaround
|
||||||
SECTOR_SHIFT = 0;
|
SECTOR_SHIFT = 0;
|
||||||
SECTOR_SIZE = SelectedDrive.Geometry.BytesPerSector;
|
SECTOR_SIZE = SelectedDrive.SectorSize;
|
||||||
while (SECTOR_SIZE>>=1)
|
while (SECTOR_SIZE>>=1)
|
||||||
SECTOR_SHIFT++;
|
SECTOR_SHIFT++;
|
||||||
SECTOR_SIZE = SelectedDrive.Geometry.BytesPerSector;
|
SECTOR_SIZE = SelectedDrive.SectorSize;
|
||||||
LIBFAT_SECTOR_SHIFT = SECTOR_SHIFT;
|
LIBFAT_SECTOR_SHIFT = SECTOR_SHIFT;
|
||||||
LIBFAT_SECTOR_SIZE = SECTOR_SIZE;
|
LIBFAT_SECTOR_SIZE = SECTOR_SIZE;
|
||||||
LIBFAT_SECTOR_MASK = SECTOR_SIZE - 1;
|
LIBFAT_SECTOR_MASK = SECTOR_SIZE - 1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue