mirror of
https://github.com/veracrypt/VeraCrypt
synced 2024-11-10 13:13:34 +01:00
Windows Driver: Use real disk sector size instead of generic 512 bytes value when probing disk real size
This commit is contained in:
parent
a4c5f03bee
commit
bec929ce03
@ -3653,11 +3653,16 @@ NTSTATUS ProbeRealDriveSize (PDEVICE_OBJECT driveDeviceObject, LARGE_INTEGER *dr
|
||||
LARGE_INTEGER offset;
|
||||
byte *sectorBuffer;
|
||||
ULONGLONG startTime;
|
||||
ULONG sectorSize;
|
||||
|
||||
if (!UserCanAccessDriveDevice())
|
||||
return STATUS_ACCESS_DENIED;
|
||||
|
||||
sectorBuffer = TCalloc (TC_SECTOR_SIZE_BIOS);
|
||||
status = GetDeviceSectorSize (driveDeviceObject, §orSize);
|
||||
if (!NT_SUCCESS (status))
|
||||
return status;
|
||||
|
||||
sectorBuffer = TCalloc (sectorSize);
|
||||
if (!sectorBuffer)
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
|
||||
@ -3672,12 +3677,12 @@ NTSTATUS ProbeRealDriveSize (PDEVICE_OBJECT driveDeviceObject, LARGE_INTEGER *dr
|
||||
}
|
||||
|
||||
startTime = KeQueryInterruptTime ();
|
||||
for (offset.QuadPart = sysLength.QuadPart; ; offset.QuadPart += TC_SECTOR_SIZE_BIOS)
|
||||
for (offset.QuadPart = sysLength.QuadPart; ; offset.QuadPart += sectorSize)
|
||||
{
|
||||
status = TCReadDevice (driveDeviceObject, sectorBuffer, offset, TC_SECTOR_SIZE_BIOS);
|
||||
status = TCReadDevice (driveDeviceObject, sectorBuffer, offset, sectorSize);
|
||||
|
||||
if (NT_SUCCESS (status))
|
||||
status = TCWriteDevice (driveDeviceObject, sectorBuffer, offset, TC_SECTOR_SIZE_BIOS);
|
||||
status = TCWriteDevice (driveDeviceObject, sectorBuffer, offset, sectorSize);
|
||||
|
||||
if (!NT_SUCCESS (status))
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user