ich wollt nur mal darauf hinweisen, das der Code von hathor nicht 100% funktionieren wird.
denn wenn eine "Disk" aus dem laufendem System entfernt wird (es reicht wenn ein USB-Stick o.Ä. entfernt wird), dann werden die Nummern der nachfolgenden Disks nicht geändert, wobei dann eine "Lücke" entsteht, an welcher sein Code aufhört zu zählen.
Code:
Bsp:
\\.\PhysicalDrive0 - HDD 1
\\.\PhysicalDrive1 - HDD 2
\\.\PhysicalDrive2 - USB 1
\\.\PhysicalDrive3 - USB 2
USB 1 entfernt:
\\.\PhysicalDrive0 - HDD 1
\\.\PhysicalDrive1 - HDD 2
\\.\PhysicalDrive3 - USB 2
3 Laufwerke vorhanden, es würden aber nur 2 gezählt.
einfache Lösung:
Delphi-Quellcode:
function GetHDDCount: integer;
var f, i: integer;
begin
Result := 0;
for i := 0 to 255 do
begin
f := FileOpen('\\.\PHYSICALDRIVE' + IntToStr(i), fmOpenRead or fmShareDenyNone);
if f = INVALID_HANDLE_VALUE then continue;
FileClose(f);
inc(Result);
end;
end;
(statt 255 würde meistens auch schon 9 ausreichen, aber sicher is sicher
)
PS: die geöffnete Laufwerke sollten besser auch wieder geschlossen werden !!!