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

Windows: use IOCTL_DISK_GET_DRIVE_GEOMETRY_EX instead of the deprecated IOCTL_DISK_GET_DRIVE_GEOMETRY in order to get accurate disk size value.

This commit is contained in:
Mounir IDRASSI
2017-05-15 16:22:48 +02:00
parent ce4e7fd64d
commit 74b82118d5
13 changed files with 133 additions and 83 deletions

View File

@@ -3416,7 +3416,7 @@ BOOL QueryFreeSpace (HWND hwndDlg, HWND hwndTextBox, BOOL display)
}
else
{
DISK_GEOMETRY driveInfo;
DISK_GEOMETRY_EX driveInfo;
PARTITION_INFORMATION diskInfo;
BOOL piValid = FALSE;
BOOL gValid = FALSE;
@@ -3465,8 +3465,7 @@ BOOL QueryFreeSpace (HWND hwndDlg, HWND hwndTextBox, BOOL display)
LARGE_INTEGER lDiskFree;
// Drive geometry info is used only when GetPartitionInfo() fails
lDiskFree.QuadPart = driveInfo.Cylinders.QuadPart * driveInfo.BytesPerSector *
driveInfo.SectorsPerTrack * driveInfo.TracksPerCylinder;
lDiskFree.QuadPart = driveInfo.DiskSize.QuadPart;
nVolumeSize = lDiskFree.QuadPart;
@@ -10320,7 +10319,7 @@ static DWORD GetFormatSectorSize ()
if (!bDevice)
return TC_SECTOR_SIZE_FILE_HOSTED_VOLUME;
DISK_GEOMETRY geometry;
DISK_GEOMETRY_EX geometry;
if (!GetDriveGeometry (szDiskFile, &geometry))
{
@@ -10328,5 +10327,5 @@ static DWORD GetFormatSectorSize ()
AbortProcessSilent();
}
return geometry.BytesPerSector;
return geometry.Geometry.BytesPerSector;
}