Und du bist dir ganz sicher, daß es beide Male auf die selbe Platte zeigt?
du könntst ja als Erstes mal den Rückgabewert von DeviceIOControl mit auswerten.
Delphi-Quellcode:
if hDevice <> INVALID_HANDLE_VALUE then
if DeviceIOControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0, @dg, sizeof(dg), dummy, nil) then
begin
size := dg.Cylinders.QuadPart*dg.TracksPerCylinder*dg.SectorsPerTrack*dg.BytesPerSector;
MemHD.Lines.Add('HD'+inttostr(i)+': '+chr(9)+IntToStr(Round(size/ 1048576)));
end;
oder
Delphi-Quellcode:
if (hDevice <> INVALID_HANDLE_VALUE)
and DeviceIOControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY,
nil, 0, @dg, sizeof(dg), dummy, nil) then
begin
size := dg.Cylinders.QuadPart*dg.TracksPerCylinder*dg.SectorsPerTrack*dg.BytesPerSector;
MemHD.Lines.Add('HD'+inttostr(i)+': '+chr(9)+IntToStr(Round(size/ 1048576)));
end;
Eventuell ist in dem Rechner auch ein RAID-System, dann gibt's ja auch mehr physikalische Platten, als Logische,
oder nicht alles ist gemountet,
oder ...?