![]() |
DeviceIOControl - DeviceNumber ermitteln
Hallo, ich versuche gerade die PhysicalDiscNumber von einer Partition zu ermitteln.
Hier mal der Code:
Delphi-Quellcode:
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?
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; Hoffe mir kann jemand helfen. Danke schonmal! |
Re: DeviceIOControl - DeviceNumber ermitteln
Was gibt im Fehlerfall GetLastError() zurück?
Ansonsten versuch’s mit ... GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, ... |
Re: DeviceIOControl - DeviceNumber ermitteln
So funktionierts. Vielen Dank!
Delphi-Quellcode:
H := CreateFile(PChar('\\.\'+Drive+':'), GENERIC_READ, FILE_SHARE_READ or FILE_SHARE_WRITE, nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz