Skip to content

Commit 21b3382

Browse files
authored
[SHELL32] Allow shell to format blank partitions (reactos#7810)
- Don't corrupt static (global) data when formatting more than one disk at the same time. - Guess partition size to enable formatting blank partitions. - Added info tip. - Calls SetVolumeLabel. CORE-17273
1 parent 090d563 commit 21b3382

38 files changed

+381
-196
lines changed

dll/win32/shell32/dialogs/drive.cpp

Lines changed: 229 additions & 86 deletions
Large diffs are not rendered by default.

dll/win32/shell32/folders/CDrivesFolder.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,13 @@ HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf,
260260
return E_FAIL;
261261
}
262262
nDriveType = GetDriveTypeW(szDrive);
263-
GetVolumeInformationW(szDrive, NULL, 0, NULL, NULL, &dwFlags, NULL, 0);
263+
if (!GetVolumeInformationW(szDrive, NULL, 0, NULL, NULL, &dwFlags, NULL, 0))
264+
{
265+
if (nDriveType >= DRIVE_REMOTE)
266+
dwFlags = FILE_READ_ONLY_VOLUME;
267+
else
268+
dwFlags = 0; // Assume drive with unknown filesystem, allow format
269+
}
264270

265271
// custom command IDs
266272
#if 0 // Disabled until our menu building system is fixed
@@ -281,7 +287,7 @@ HRESULT CALLBACK DrivesContextMenuCallback(IShellFolder *psf,
281287

282288
UINT idCmdFirst = pqcminfo->idCmdFirst;
283289
UINT idCmd = 0;
284-
if (!(dwFlags & FILE_READ_ONLY_VOLUME) && nDriveType != DRIVE_REMOTE)
290+
if (!(dwFlags & FILE_READ_ONLY_VOLUME) && nDriveType != DRIVE_REMOTE && cidl == 1)
285291
{
286292
/* add separator and Format */
287293
idCmd = idCmdFirst + CMDID_FORMAT;

dll/win32/shell32/lang/bg-BG.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,18 @@ BEGIN
604604
DEFPUSHBUTTON "&Начало", IDOK, 53, 198, 60, 14
605605
PUSHBUTTON "&Затваряне", IDCANCEL, 118, 198, 60, 14
606606
LTEXT "&Обем:", -1, 7, 6, 169, 9
607-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
607+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
608608
LTEXT "&Файлова система", -1, 7, 35, 170, 9
609-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
609+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
610610
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
611611
LTEXT "&Размер на разпределените участъци", -1, 7, 64, 170, 9
612-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
612+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
613613
LTEXT "Етикет на& тома:", -1, 7, 93, 170, 9
614614
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
615615
GROUPBOX "&Възможности за оразмеряване", 4610, 7, 121, 170, 49
616616
AUTOCHECKBOX "&Бързо оразмеряване", 28674, 16, 135, 155, 10
617617
AUTOCHECKBOX "&Използване на уплътняване", 28675, 16, 152, 155, 10
618+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
618619
END
619620

620621
IDD_CHECK_DISK DIALOGEX 50, 50, 244, 120

dll/win32/shell32/lang/ca-ES.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,18 @@ BEGIN
604604
DEFPUSHBUTTON "&Start", IDOK, 53, 198, 60, 14
605605
PUSHBUTTON "&Close", IDCANCEL, 118, 198, 60, 14
606606
LTEXT "Ca&pacity:", -1, 7, 6, 169, 9
607-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
607+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
608608
LTEXT "&File system", -1, 7, 35, 170, 9
609-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
609+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
610610
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
611611
LTEXT "&Allocation unit size", -1, 7, 64, 170, 9
612-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
612+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
613613
LTEXT "Volume &label", -1, 7, 93, 170, 9
614614
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
615615
GROUPBOX "Format &options", 4610, 7, 121, 170, 49
616616
AUTOCHECKBOX "&Quick Format", 28674, 16, 135, 155, 10
617617
AUTOCHECKBOX "&Enable Compression", 28675, 16, 152, 155, 10
618+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
618619
END
619620

620621
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

dll/win32/shell32/lang/cs-CZ.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -612,17 +612,18 @@ BEGIN
612612
DEFPUSHBUTTON "&Spustit", IDOK, 53, 198, 60, 14
613613
PUSHBUTTON "&Zavřít", IDCANCEL, 118, 198, 60, 14
614614
LTEXT "&Kapacita:", -1, 7, 6, 169, 9
615-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
615+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
616616
LTEXT "Souborový systé&m", -1, 7, 35, 170, 9
617-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
617+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
618618
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
619619
LTEXT "&Velikost alokační jednotky", -1, 7, 64, 170, 9
620-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
620+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
621621
LTEXT "&Jmenovka svazku", -1, 7, 93, 170, 9
622622
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
623623
GROUPBOX "Možnosti &formátování", 4610, 7, 121, 170, 49
624624
AUTOCHECKBOX "&Rychlé formátování", 28674, 16, 135, 155, 10
625625
AUTOCHECKBOX "&Aktivovat kompresi", 28675, 16, 152, 155, 10
626+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
626627
END
627628

628629
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

dll/win32/shell32/lang/da-DK.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -611,17 +611,18 @@ BEGIN
611611
DEFPUSHBUTTON "&Start", IDOK, 53, 198, 60, 14
612612
PUSHBUTTON "&Close", IDCANCEL, 118, 198, 60, 14
613613
LTEXT "Ca&pacity:", -1, 7, 6, 169, 9
614-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
614+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
615615
LTEXT "&File system", -1, 7, 35, 170, 9
616-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
616+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
617617
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
618618
LTEXT "&Allocation unit size", -1, 7, 64, 170, 9
619-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
619+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
620620
LTEXT "Volume &label", -1, 7, 93, 170, 9
621621
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
622622
GROUPBOX "Format &options", 4610, 7, 121, 170, 49
623623
AUTOCHECKBOX "&Quick Format", 28674, 16, 135, 155, 10
624624
AUTOCHECKBOX "&Enable Compression", 28675, 16, 152, 155, 10
625+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
625626
END
626627

627628
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

dll/win32/shell32/lang/de-DE.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,18 @@ BEGIN
604604
DEFPUSHBUTTON "&Starten", IDOK, 53, 198, 60, 14
605605
PUSHBUTTON "S&chließen", IDCANCEL, 118, 198, 60, 14
606606
LTEXT "S&peicherkapazität:", -1, 7, 6, 169, 9
607-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
607+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
608608
LTEXT "&Dateisystem", -1, 7, 35, 170, 9
609-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
609+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
610610
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
611611
LTEXT "&Größe der Zuordnungseinheiten", -1, 7, 64, 170, 9
612-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
612+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
613613
LTEXT "Volume&bezeichnung", -1, 7, 93, 170, 9
614614
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
615615
GROUPBOX "&Formatierungsoptionen", 4610, 7, 121, 170, 49
616616
AUTOCHECKBOX "Sch&nellformatierung", 28674, 16, 135, 155, 10
617617
AUTOCHECKBOX "&Komprimierung aktivieren", 28675, 16, 152, 155, 10
618+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
618619
END
619620

620621
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

dll/win32/shell32/lang/el-GR.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,18 @@ BEGIN
604604
DEFPUSHBUTTON "&Start", IDOK, 53, 198, 60, 14
605605
PUSHBUTTON "&Close", IDCANCEL, 118, 198, 60, 14
606606
LTEXT "Ca&pacity:", -1, 7, 6, 169, 9
607-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
607+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
608608
LTEXT "&File system", -1, 7, 35, 170, 9
609-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
609+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
610610
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
611611
LTEXT "&Allocation unit size", -1, 7, 64, 170, 9
612-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
612+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
613613
LTEXT "Volume &label", -1, 7, 93, 170, 9
614614
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
615615
GROUPBOX "Format &options", 4610, 7, 121, 170, 49
616616
AUTOCHECKBOX "&Quick Format", 28674, 16, 135, 155, 10
617617
AUTOCHECKBOX "&Enable Compression", 28675, 16, 152, 155, 10
618+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
618619
END
619620

620621
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

dll/win32/shell32/lang/en-GB.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,18 @@ BEGIN
604604
DEFPUSHBUTTON "&Start", IDOK, 53, 198, 60, 14
605605
PUSHBUTTON "&Close", IDCANCEL, 118, 198, 60, 14
606606
LTEXT "Ca&pacity:", -1, 7, 6, 169, 9
607-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
607+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
608608
LTEXT "&File system", -1, 7, 35, 170, 9
609-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
609+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
610610
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
611611
LTEXT "&Allocation unit size", -1, 7, 64, 170, 9
612-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
612+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
613613
LTEXT "Volume &label", -1, 7, 93, 170, 9
614614
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
615615
GROUPBOX "Format &options", 4610, 7, 121, 170, 49
616616
AUTOCHECKBOX "&Quick Format", 28674, 16, 135, 155, 10
617617
AUTOCHECKBOX "&Enable Compression", 28675, 16, 152, 155, 10
618+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
618619
END
619620

620621
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

dll/win32/shell32/lang/en-US.rc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,17 +604,18 @@ BEGIN
604604
DEFPUSHBUTTON "&Start", IDOK, 53, 198, 60, 14
605605
PUSHBUTTON "&Close", IDCANCEL, 118, 198, 60, 14
606606
LTEXT "Ca&pacity:", -1, 7, 6, 169, 9
607-
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
607+
COMBOBOX 28673, 7, 17, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
608608
LTEXT "&File system", -1, 7, 35, 170, 9
609-
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
609+
COMBOBOX 28677, 7, 46, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
610610
CONTROL "", 28678, "MSCTLS_PROGRESS32", 0, 7, 181, 170, 8
611611
LTEXT "&Allocation unit size", -1, 7, 64, 170, 9
612-
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | NOT WS_TABSTOP
612+
COMBOBOX 28680, 7, 75, 170, 200, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
613613
LTEXT "Volume &label", -1, 7, 93, 170, 9
614614
EDITTEXT 28679, 7, 103, 170, 13, ES_AUTOHSCROLL
615615
GROUPBOX "Format &options", 4610, 7, 121, 170, 49
616616
AUTOCHECKBOX "&Quick Format", 28674, 16, 135, 155, 10
617617
AUTOCHECKBOX "&Enable Compression", 28675, 16, 152, 155, 10
618+
CONTROL "", 30000, "STATIC", SS_ICON | WS_TABSTOP | SS_CENTERIMAGE | SS_NOTIFY, 7, 198, 15, 14
618619
END
619620

620621
IDD_CHECK_DISK DIALOGEX 50, 50, 194, 115

0 commit comments

Comments
 (0)