diff --git a/src/drive.c b/src/drive.c index 7116a126..4d5132bf 100644 --- a/src/drive.c +++ b/src/drive.c @@ -615,7 +615,8 @@ int GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSyst } SelectedDrive.DiskSize = DiskGeometry->DiskSize.QuadPart; memcpy(&SelectedDrive.Geometry, &DiskGeometry->Geometry, sizeof(DISK_GEOMETRY)); - uprintf("Sector Size: %d bytes\n", DiskGeometry->Geometry.BytesPerSector); + uprintf("Disk type: %s, Sector Size: %d bytes\n", (DiskGeometry->Geometry.MediaType == FixedMedia)?"Fixed":"Removable", + DiskGeometry->Geometry.BytesPerSector); uprintf("Cylinders: %lld, TracksPerCylinder: %d, SectorsPerTrack: %d\n", DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder, DiskGeometry->Geometry.SectorsPerTrack); @@ -900,7 +901,8 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m case FS_NTFS: case FS_EXFAT: case FS_UDF: - DriveLayoutEx.PartitionEntry[0].Mbr.PartitionType = 0x07; // NTFS + case FS_REFS: + DriveLayoutEx.PartitionEntry[0].Mbr.PartitionType = 0x07; break; case FS_FAT32: DriveLayoutEx.PartitionEntry[0].Mbr.PartitionType = 0x0c; // FAT32 LBA diff --git a/src/rufus.c b/src/rufus.c index 1393bec9..5ca8a3c3 100644 --- a/src/rufus.c +++ b/src/rufus.c @@ -107,7 +107,7 @@ typedef ULONG (WINAPI *SHChangeNotifyRegister_t)( const MY_SHChangeNotifyEntry *pshcne ); -const char* FileSystemLabel[FS_MAX] = { "FAT", "FAT32", "NTFS", "UDF", "exFAT" }; +const char* FileSystemLabel[FS_MAX] = { "FAT", "FAT32", "NTFS", "UDF", "exFAT", "ReFS" }; // Number of steps for each FS for FCC_STRUCTURE_PROGRESS const int nb_steps[FS_MAX] = { 5, 5, 12, 1, 10 }; static const char* PartitionTypeLabel[2] = { "MBR", "GPT" }; @@ -310,6 +310,12 @@ static BOOL DefineClusterSizes(void) SelectedDrive.ClusterSize[FS_UDF].Allowed = 0x00000100; SelectedDrive.ClusterSize[FS_UDF].Default = 1; } + + // ReFS (only supported for Windows 8.1 and later and for fixed disks) + if ((nWindowsVersion >= WINDOWS_8_1_OR_LATER) && (SelectedDrive.Geometry.MediaType == FixedMedia)) { + SelectedDrive.ClusterSize[FS_REFS].Allowed = 0x00000100; + SelectedDrive.ClusterSize[FS_REFS].Default = 1; + } } out: @@ -2012,8 +2018,8 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA break; } SetClusterSizes(fs); - // Disable/restore the quick format control depending on large FAT32 - if ((fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32))) { + // Disable/restore the quick format control depending on large FAT32 or ReFS + if ( ((fs == FS_FAT32) && ((SelectedDrive.DiskSize > LARGE_FAT32_SIZE) || (force_large_fat32))) || (fs == FS_REFS) ) { if (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_QUICKFORMAT))) { uQFChecked = IsChecked(IDC_QUICKFORMAT); CheckDlgButton(hMainDialog, IDC_QUICKFORMAT, BST_CHECKED); @@ -2036,7 +2042,7 @@ static INT_PTR CALLBACK MainCallback(HWND hDlg, UINT message, WPARAM wParam, LPA } break; } - if ((fs == FS_EXFAT) || (fs == FS_UDF)) { + if ((fs == FS_EXFAT) || (fs == FS_UDF) || (fs == FS_REFS)) { if (IsWindowEnabled(hBoot)) { // unlikely to be supported by BIOSes => don't bother IGNORE_RETVAL(ComboBox_SetCurSel(hBootType, 0)); diff --git a/src/rufus.h b/src/rufus.h index f471c80d..61d75111 100644 --- a/src/rufus.h +++ b/src/rufus.h @@ -171,6 +171,7 @@ enum { FS_NTFS, FS_UDF, FS_EXFAT, + FS_REFS, FS_MAX }; diff --git a/src/rufus.rc b/src/rufus.rc index 10e54cde..f665d968 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL IDD_DIALOG DIALOGEX 12, 12, 206, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Rufus 1.4.6.443" +CAPTION "Rufus 1.4.6.444" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,94,291,50,14 @@ -165,7 +165,7 @@ END RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL -CAPTION "Rufus 1.4.6.443" +CAPTION "Rufus 1.4.6.444" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,94,291,50,14 @@ -427,8 +427,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,4,6,443 - PRODUCTVERSION 1,4,6,443 + FILEVERSION 1,4,6,444 + PRODUCTVERSION 1,4,6,444 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -445,13 +445,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "1.4.6.443" + VALUE "FileVersion", "1.4.6.444" VALUE "InternalName", "Rufus" VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)" VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html" VALUE "OriginalFilename", "rufus.exe" VALUE "ProductName", "Rufus" - VALUE "ProductVersion", "1.4.6.443" + VALUE "ProductVersion", "1.4.6.444" END END BLOCK "VarFileInfo"