Use Uint32x32To64() function instead of ULONG * ULONG. Fixes partition length truncation.

See issue #1871 for more details.

svn path=/trunk/; revision=24769
This commit is contained in:
Aleksey Bragin 2006-11-16 17:26:31 +00:00
parent cb8322a4e3
commit 4a33b4c040

View file

@ -1583,7 +1583,8 @@ IoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
/* Get the starting offset */
PartitionInfo->StartingOffset.QuadPart =
StartOffset +
GET_STARTING_SECTOR(PartitionDescriptor) * SectorSize;
UInt32x32To64(GET_STARTING_SECTOR(PartitionDescriptor),
SectorSize);
/* Calculate the number of hidden sectors */
PartitionInfo->HiddenSectors = (PartitionInfo->
@ -1593,7 +1594,8 @@ IoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
/* Get the partition length */
PartitionInfo->PartitionLength.QuadPart =
GET_PARTITION_LENGTH(PartitionDescriptor) * SectorSize;
UInt32x32To64(GET_PARTITION_LENGTH(PartitionDescriptor),
SectorSize);
/* FIXME: REACTOS HACK */
PartitionInfo->PartitionNumber = i + 1;
@ -1637,8 +1639,9 @@ IoReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
{
/* Get its offset */
Offset.QuadPart = VolumeOffset.QuadPart +
GET_STARTING_SECTOR(PartitionDescriptor) *
SectorSize;
UInt32x32To64(
GET_STARTING_SECTOR(PartitionDescriptor),
SectorSize);
/* If this is a primary partition, this is the volume offset */
if (IsPrimary) VolumeOffset = Offset;