1
0
mirror of https://github.com/veracrypt/VeraCrypt.git synced 2025-11-12 19:38:26 -06:00

Windows: Enable selection of Quick Format for file containers. Separate Quick Format and Dynamic Volume options.

This commit is contained in:
Mounir IDRASSI
2018-12-05 11:32:09 +01:00
parent ace5399749
commit 7ef3d5e369
3 changed files with 56 additions and 28 deletions

View File

@@ -154,7 +154,7 @@ FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN BEGIN
COMBOBOX IDC_FILESYS,43,13,36,90,CBS_DROPDOWNLIST | WS_TABSTOP COMBOBOX IDC_FILESYS,43,13,36,90,CBS_DROPDOWNLIST | WS_TABSTOP
COMBOBOX IDC_CLUSTERSIZE,112,13,42,90,CBS_DROPDOWNLIST | WS_TABSTOP COMBOBOX IDC_CLUSTERSIZE,112,13,42,90,CBS_DROPDOWNLIST | WS_TABSTOP
CONTROL "Quick Format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,163,11,60,18 CONTROL "Quick Format",IDC_QUICKFORMAT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,163,9,60,8
CONTROL "",IDC_SHOW_KEYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,214,38,9,8 CONTROL "",IDC_SHOW_KEYS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,214,38,9,8
PUSHBUTTON "Abort",IDC_ABORT_BUTTON,169,75,50,14 PUSHBUTTON "Abort",IDC_ABORT_BUTTON,169,75,50,14
RTEXT "Header Key: ",IDT_HEADER_KEY,2,47,54,8 RTEXT "Header Key: ",IDT_HEADER_KEY,2,47,54,8
@@ -178,6 +178,7 @@ BEGIN
CONTROL "",IDC_RANDOM_BYTES,"Static",SS_SIMPLE | WS_GROUP,57,38,155,8,WS_EX_TRANSPARENT CONTROL "",IDC_RANDOM_BYTES,"Static",SS_SIMPLE | WS_GROUP,57,38,155,8,WS_EX_TRANSPARENT
GROUPBOX "Randomness Collected From Mouse Movements",IDT_ENTROPY_BAR,0,153,224,18 GROUPBOX "Randomness Collected From Mouse Movements",IDT_ENTROPY_BAR,0,153,224,18
CONTROL "",IDC_ENTROPY_BAR,"msctls_progress32",WS_BORDER,11,162,202,6 CONTROL "",IDC_ENTROPY_BAR,"msctls_progress32",WS_BORDER,11,162,202,6
CONTROL "Dynamic",SPARSE_FILE,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,163,21,60,8
END END
IDD_INTRO_PAGE_DLG DIALOGEX 0, 0, 226, 172 IDD_INTRO_PAGE_DLG DIALOGEX 0, 0, 226, 172

View File

@@ -145,6 +145,7 @@
#define IDC_SHOW_PIM 1106 #define IDC_SHOW_PIM 1106
#define IDC_TB 1107 #define IDC_TB 1107
#define IDC_SKIP_RESCUE_VERIFICATION 1108 #define IDC_SKIP_RESCUE_VERIFICATION 1108
#define SPARSE_FILE 1109
// Next default values for new objects // Next default values for new objects
// //
@@ -153,7 +154,7 @@
#define _APS_NO_MFC 1 #define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 134 #define _APS_NEXT_RESOURCE_VALUE 134
#define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1109 #define _APS_NEXT_CONTROL_VALUE 1110
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif
#endif #endif

View File

@@ -281,7 +281,8 @@ wchar_t outRandPoolDispBuffer [RANDPOOL_DISPLAY_SIZE];
BOOL bDisplayPoolContents = TRUE; BOOL bDisplayPoolContents = TRUE;
volatile BOOL bSparseFileSwitch = FALSE; volatile BOOL bSparseFileSwitch = FALSE;
volatile BOOL quickFormat = FALSE; /* WARNING: Meaning of this variable depends on bSparseFileSwitch. If bSparseFileSwitch is TRUE, this variable represents the sparse file flag. */ volatile BOOL quickFormat = FALSE;
volatile BOOL dynamicFormat = FALSE; /* this variable represents the sparse file flag. */
volatile int fileSystem = FILESYS_NONE; volatile int fileSystem = FILESYS_NONE;
volatile int clusterSize = 0; volatile int clusterSize = 0;
@@ -2632,7 +2633,7 @@ static void __cdecl volTransformThreadFunction (void *hwndDlgArg)
volParams->headerFlags = (CreatingHiddenSysVol() ? TC_HEADER_FLAG_ENCRYPTED_SYSTEM : 0); volParams->headerFlags = (CreatingHiddenSysVol() ? TC_HEADER_FLAG_ENCRYPTED_SYSTEM : 0);
volParams->fileSystem = fileSystem; volParams->fileSystem = fileSystem;
volParams->clusterSize = clusterSize; volParams->clusterSize = clusterSize;
volParams->sparseFileSwitch = bSparseFileSwitch; volParams->sparseFileSwitch = dynamicFormat;
volParams->quickFormat = quickFormat; volParams->quickFormat = quickFormat;
volParams->sectorSize = GetFormatSectorSize(); volParams->sectorSize = GetFormatSectorSize();
volParams->realClusterSize = &realClusterSize; volParams->realClusterSize = &realClusterSize;
@@ -2821,7 +2822,7 @@ static void __cdecl volTransformThreadFunction (void *hwndDlgArg)
{ {
Info("FORMAT_FINISHED_INFO", hwndDlg); Info("FORMAT_FINISHED_INFO", hwndDlg);
if (bSparseFileSwitch && quickFormat) if (dynamicFormat)
Warning("SPARSE_FILE_SIZE_NOTE", hwndDlg); Warning("SPARSE_FILE_SIZE_NOTE", hwndDlg);
} }
} }
@@ -4934,18 +4935,23 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
if (bHiddenVol) if (bHiddenVol)
{ {
quickFormat = !bHiddenVolHost; quickFormat = !bHiddenVolHost;
dynamicFormat = FALSE;
bSparseFileSwitch = FALSE; bSparseFileSwitch = FALSE;
SetCheckBox (hwndDlg, SPARSE_FILE, FALSE);
EnableWindow (GetDlgItem (hwndDlg, SPARSE_FILE), FALSE);
SetCheckBox (hwndDlg, IDC_QUICKFORMAT, quickFormat); SetCheckBox (hwndDlg, IDC_QUICKFORMAT, quickFormat);
SetWindowTextW (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), GetString ((bDevice || !bHiddenVolHost) ? "IDC_QUICKFORMAT" : "SPARSE_FILE")); EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), bHiddenVolHost);
EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), bDevice && bHiddenVolHost);
} }
else else
{ {
if (bDevice) if (bDevice)
{ {
dynamicFormat = FALSE;
bSparseFileSwitch = FALSE; bSparseFileSwitch = FALSE;
SetWindowTextW (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), GetString("IDC_QUICKFORMAT")); SetCheckBox (hwndDlg, SPARSE_FILE, FALSE);
EnableWindow (GetDlgItem (hwndDlg, SPARSE_FILE), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), TRUE); EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), TRUE);
} }
else else
@@ -4953,8 +4959,6 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
wchar_t root[TC_MAX_PATH]; wchar_t root[TC_MAX_PATH];
DWORD fileSystemFlags = 0; DWORD fileSystemFlags = 0;
SetWindowTextW (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), GetString("SPARSE_FILE"));
/* Check if the host file system supports sparse files */ /* Check if the host file system supports sparse files */
if (GetVolumePathName (szFileName, root, array_capacity (root))) if (GetVolumePathName (szFileName, root, array_capacity (root)))
@@ -4964,8 +4968,13 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
} }
else else
bSparseFileSwitch = FALSE; bSparseFileSwitch = FALSE;
if (!bSparseFileSwitch)
EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), bSparseFileSwitch); {
dynamicFormat = FALSE;
SetCheckBox (hwndDlg, SPARSE_FILE, FALSE);
}
EnableWindow (GetDlgItem (hwndDlg, SPARSE_FILE), bSparseFileSwitch);
EnableWindow (GetDlgItem (hwndDlg, IDC_QUICKFORMAT), TRUE);
} }
} }
@@ -5866,6 +5875,7 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
bHiddenVolHost = FALSE; bHiddenVolHost = FALSE;
bSparseFileSwitch = FALSE; bSparseFileSwitch = FALSE;
quickFormat = FALSE; quickFormat = FALSE;
dynamicFormat = FALSE;
return 1; return 1;
} }
@@ -5904,18 +5914,30 @@ BOOL CALLBACK PageDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
} }
if (lw == IDC_QUICKFORMAT && IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT))) if (lw == IDC_QUICKFORMAT)
{ {
if (bSparseFileSwitch) if (IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT)))
{
if (AskWarnYesNo("CONFIRM_SPARSE_FILE", MainDlg) == IDNO)
SetCheckBox (hwndDlg, IDC_QUICKFORMAT, FALSE);
}
else
{ {
if (AskWarnYesNo("WARN_QUICK_FORMAT", MainDlg) == IDNO) if (AskWarnYesNo("WARN_QUICK_FORMAT", MainDlg) == IDNO)
SetCheckBox (hwndDlg, IDC_QUICKFORMAT, FALSE); SetCheckBox (hwndDlg, IDC_QUICKFORMAT, FALSE);
} }
else if (IsButtonChecked (GetDlgItem (hCurPage, SPARSE_FILE)))
{
/* sparse file require quick format */
SetCheckBox (hwndDlg, SPARSE_FILE, FALSE);
}
return 1;
}
if (lw == SPARSE_FILE && IsButtonChecked (GetDlgItem (hCurPage, SPARSE_FILE)))
{
if (AskWarnYesNo("CONFIRM_SPARSE_FILE", MainDlg) == IDNO)
SetCheckBox (hwndDlg, SPARSE_FILE, FALSE);
else if (!IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT)) && IsWindowEnabled (GetDlgItem (hCurPage, IDC_QUICKFORMAT)))
{
/* sparse file require quick format */
SetCheckBox (hwndDlg, IDC_QUICKFORMAT, TRUE);
}
return 1; return 1;
} }
@@ -6194,6 +6216,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
} }
quickFormat = CmdQuickFormat; quickFormat = CmdQuickFormat;
dynamicFormat = CmdSparseFileSwitch;
if (!GetDiskFreeSpaceEx (root, &free, 0, 0)) if (!GetDiskFreeSpaceEx (root, &free, 0, 0))
{ {
@@ -6214,7 +6237,7 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
} }
else else
{ {
if (!bSparseFileSwitch && (nVolumeSize > free.QuadPart)) if (!dynamicFormat && (nVolumeSize > free.QuadPart))
{ {
AbortProcess ("ERR_CONTAINER_SIZE_TOO_BIG"); AbortProcess ("ERR_CONTAINER_SIZE_TOO_BIG");
} }
@@ -6801,7 +6824,8 @@ BOOL CALLBACK MainDialogProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
{ {
// Format has been aborted (did not finish) // Format has been aborted (did not finish)
EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), (bDevice || bSparseFileSwitch) && !(bHiddenVol && !bHiddenVolHost)); EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), !(bHiddenVol && !bHiddenVolHost));
EnableWindow (GetDlgItem (hCurPage, SPARSE_FILE), (bSparseFileSwitch) && !(bHiddenVol && !bHiddenVolHost));
EnableWindow (GetDlgItem (hCurPage, IDC_FILESYS), TRUE); EnableWindow (GetDlgItem (hCurPage, IDC_FILESYS), TRUE);
EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), TRUE); EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), TRUE);
EnableWindow (GetDlgItem (hwndDlg, IDC_PREV), TRUE); EnableWindow (GetDlgItem (hwndDlg, IDC_PREV), TRUE);
@@ -8354,8 +8378,9 @@ retryCDDriveCheck:
SendMessage (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), CB_GETCURSEL, 0, 0) , 0); SendMessage (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), CB_GETCURSEL, 0, 0) , 0);
quickFormat = IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT)); quickFormat = IsButtonChecked (GetDlgItem (hCurPage, IDC_QUICKFORMAT));
dynamicFormat = IsButtonChecked (GetDlgItem (hCurPage, SPARSE_FILE));
if (!quickFormat && !bDevice && !(bHiddenVol && !bHiddenVolHost) && (nVolumeSize > (ULONGLONG) nAvailableFreeSpace)) if (!dynamicFormat && !bDevice && !(bHiddenVol && !bHiddenVolHost) && (nVolumeSize > (ULONGLONG) nAvailableFreeSpace))
{ {
Error("VOLUME_TOO_LARGE_FOR_HOST", hwndDlg); Error("VOLUME_TOO_LARGE_FOR_HOST", hwndDlg);
bVolTransformThreadToRun = FALSE; bVolTransformThreadToRun = FALSE;
@@ -8439,9 +8464,9 @@ retryCDDriveCheck:
} }
else if (bHiddenVol) else if (bHiddenVol)
{ {
// Hidden volume is always quick-formatted (if, however, the meaning of quickFormat is // Hidden volume is always quick-formatted.
// whether to create a sparse file, it must be set to FALSE). quickFormat = TRUE;
quickFormat = !bSparseFileSwitch; dynamicFormat = FALSE;
} }
@@ -8458,6 +8483,7 @@ retryCDDriveCheck:
EnableWindow (GetDlgItem (hwndDlg, IDHELP), FALSE); EnableWindow (GetDlgItem (hwndDlg, IDHELP), FALSE);
EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), FALSE); EnableWindow (GetDlgItem (hwndDlg, IDCANCEL), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), FALSE); EnableWindow (GetDlgItem (hCurPage, IDC_QUICKFORMAT), FALSE);
EnableWindow (GetDlgItem (hCurPage, SPARSE_FILE), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), FALSE); EnableWindow (GetDlgItem (hCurPage, IDC_CLUSTERSIZE), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_FILESYS), FALSE); EnableWindow (GetDlgItem (hCurPage, IDC_FILESYS), FALSE);
EnableWindow (GetDlgItem (hCurPage, IDC_ABORT_BUTTON), TRUE); EnableWindow (GetDlgItem (hCurPage, IDC_ABORT_BUTTON), TRUE);