Make SystemConfigurationDataQueryRoutine() store information about as many drives as needed (previous version of the code did the same).

Fixes "no partitions list" bug in usetup introduced in 24718.

svn path=/trunk/; revision=24719
This commit is contained in:
Aleksey Bragin 2006-11-11 13:17:58 +00:00
parent eb77bd4e85
commit d112ca4391

View file

@ -511,16 +511,16 @@ SystemConfigurationDataQueryRoutine(PWSTR ValueName,
for (i = 0; i < FullResourceDescriptor->PartialResourceList.Count; i++) for (i = 0; i < FullResourceDescriptor->PartialResourceList.Count; i++)
{ {
if (FullResourceDescriptor->PartialResourceList.PartialDescriptors[i].Type != CmResourceTypeDeviceSpecific || if (FullResourceDescriptor->PartialResourceList.PartialDescriptors[i].Type != CmResourceTypeDeviceSpecific ||
FullResourceDescriptor->PartialResourceList.PartialDescriptors[i].u.DeviceSpecificData.DataSize != sizeof(CM_INT13_DRIVE_PARAMETER)) FullResourceDescriptor->PartialResourceList.PartialDescriptors[i].u.DeviceSpecificData.DataSize % sizeof(CM_INT13_DRIVE_PARAMETER) != 0)
continue; continue;
*Int13Drives = RtlAllocateHeap(ProcessHeap, 0, sizeof(CM_INT13_DRIVE_PARAMETER)); *Int13Drives = RtlAllocateHeap(ProcessHeap, 0, FullResourceDescriptor->PartialResourceList.PartialDescriptors[i].u.DeviceSpecificData.DataSize);
if (*Int13Drives == NULL) if (*Int13Drives == NULL)
return STATUS_NO_MEMORY; return STATUS_NO_MEMORY;
memcpy( memcpy(
*Int13Drives, *Int13Drives,
&FullResourceDescriptor->PartialResourceList.PartialDescriptors[i + 1], &FullResourceDescriptor->PartialResourceList.PartialDescriptors[i + 1],
sizeof(CM_INT13_DRIVE_PARAMETER)); FullResourceDescriptor->PartialResourceList.PartialDescriptors[i].u.DeviceSpecificData.DataSize);
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;