diff options
author | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2023-06-04 16:25:55 +0200 |
---|---|---|
committer | Mounir IDRASSI <mounir.idrassi@idrix.fr> | 2023-06-04 16:25:55 +0200 |
commit | 22466535f1b9cbe1bd98363cfa98f7f796bc408a (patch) | |
tree | 7ee1c59af8e16b57953a86f8837fe465e418f60a /src/Format/InPlace.h | |
parent | 3c68349a39877c5420c727cd53143ab442963759 (diff) | |
download | VeraCrypt-22466535f1b9cbe1bd98363cfa98f7f796bc408a.tar.gz VeraCrypt-22466535f1b9cbe1bd98363cfa98f7f796bc408a.zip |
Windows: Possible workaround for logarithmic slowdown for Encrypt-In-Place on large volumes (relates to #1063)
We replace absolute file pointer moving by relative moving with respect to current position. This was implemented as a workaround to address the performance issues related to in-place encryption. When using SetFilePointerEx() with FILE_BEGIN as the reference point, reaching the end of large drives during in-place encryption can cause significant slowdowns. By moving the file pointer relatively, these performance issues are mitigated.
Diffstat (limited to 'src/Format/InPlace.h')
-rw-r--r-- | src/Format/InPlace.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/Format/InPlace.h b/src/Format/InPlace.h index 717a8ed3..f2d97bed 100644 --- a/src/Format/InPlace.h +++ b/src/Format/InPlace.h @@ -43,6 +43,7 @@ static int DismountFileSystem (HWND hwndDlg, HANDLE dev, int driveLetter, BOOL b static int ConcealNTFS (HANDLE dev); BOOL SaveNonSysInPlaceEncSettings (int delta, WipeAlgorithmId wipeAlgorithm, BOOL bDecrypting); static void ExportProgressStats (__int64 bytesDone, __int64 totalSize); +BOOL MoveFilePointer (HANDLE dev, LARGE_INTEGER offset); int ZeroUnreadableSectors (HANDLE dev, LARGE_INTEGER startOffset, int64 size, int sectorSize, uint64 *zeroedSectorCount); static int OpenBackupHeader (HANDLE dev, const wchar_t *devicePath, Password *password, int pkcs5, int pim, PCRYPTO_INFO *retCryptoInfo, CRYPTO_INFO *headerCryptoInfo, __int64 deviceSize); BOOL MoveClustersBeforeThreshold (HANDLE volumeHandle, PWSTR volumeDevicePath, int64 clusterThreshold); |