Hallo, ich versuche gerade die PhysicalDiscNumber von einer Partition zu ermitteln.
Hier mal der Code:
Delphi-Quellcode:
type
TStorageDeviceNumber = Record
DeviceType: LongWord;
DeviceNumber: LongWord;
PartitionNumber: LongWord;
end;
...
function GetDiskNumber(Drive : string): Integer;
var H: THandle;
SDN: TStorageDeviceNumber;
ReturnBytes: DWORD;
begin
Result := -1;
H := CreateFile(PChar('\\.\'+Drive+':'), GENERIC_READ, FILE_SHARE_READ , nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
If H = INVALID_HANDLE_VALUE Then
Exit;
If DeviceIoControl(H, $002d1080, nil, 0, @SDN, sizeof(TStorageDeviceNumber),ReturnBytes, nil) Then
Result := SDN.DeviceNumber;
CloseHandle(H);
//
end;
Ab und an erhalte ich einfach -1, weil DeviceIOControl False zurück gibt. Aber ich versteh nicht wieso. Es tritt auch nur bei manchen Partitionen einer Festplatte auf. Was hab ich also falsch gemacht?
Hoffe mir kann jemand helfen. Danke schonmal!