DriveInfo.GetDrives() für Laufwerke ohne Laufwerksbuchstabe
-
Mit DriveInfo.GetDrives() bekomme ich alle meine HDD-Laufwerke angezeigt, denen ich einen Buchstaben zugeordnet habe.
Meine externen HDDs haben keinen Buchstaben, die sind über einen Ordner zugewiesen. 2 x 4 davon stecken jeweils in einer icy-Box.
Die anderen sind per USB-Kabel angeschlossen.
Ich habe einen Ordner V:\ExtHD und in diesem für jede externe HDD einen Unterordner, der als Verweis <JUNCTION> bzw. <LINK> zu den USB-HDDs dient. Das kann man bekanntlich in der Datenträgerverwaltung so einrichten.<JUNCTION> Fantec147NTFS <JUNCTION> Fantec588Fat32 <JUNCTION> icy1pSea10TB <JUNCTION> icy1rSea6TB <JUNCTION> icy1sSea6TB <JUNCTION> icy1ySea4TB <JUNCTION> icy2uWd6TB <JUNCTION> icy2vWD4TB <JUNCTION> icy2xOs10TB <JUNCTION> icy2zSea4TB <JUNCTION> usb3oTosh3TB <JUNCTION> usb3qSea3TB <JUNCTION> usb3tHurr4TB <JUNCTION> usb3wWD4TB
Ich möchte nun gern jeweils den freien und belegten Platz und die Laufwerksgröße ermitteln.
Gibt es da eine Möglichkeit ähnlich GetDrive() ?
Dort kann man ja TotalSize und TotalFreeSpace auslesen.
-
Da wirst du wohl direkt die WinAPI-Funktionen benutzen müssen, z.B. GetDiskFreeSpaceExW.
Von C# aus mittels P/Invoke: GetDiskFreeSpaceEx.
-
@Th69
DANKE für diesen Hinweis, es klappt wunderbar.
Ich bekomme genau die Informationen, die ich haben möchte.Mit
DriveInfo[] aDrives = DriveInfo.GetDrives();
kann ich alle Laufwerke, denen ein Buchstabe zugeordnet ist, auslesen.
Da ist auch das DVD-Laufwerk dabei und die USB-Laufwerke, wenn sie einen Buchstaben haben.Kann man auch alle Laufwerke auslesen, die keinen Buuchstaben haben ?
Die Datenträgerverwaltung oder DiskPart zeigen diese ja auch an.Microsoft DiskPart-Version 10.0.19041.964 Copyright (C) Microsoft Corporation. Auf Computer: R980 DISKPART> list disk Datenträger ### Status Größe Frei Dyn GPT --------------- ------------- ------- ------- --- --- Datenträger 0 Online 2794 GB 1024 KB * Datenträger 1 Online 1863 GB 1024 KB * Datenträger 2 Online 5589 GB 0 B * Datenträger 3 Online 931 GB 3072 KB * Datenträger 4 Online 931 GB 1024 KB * Datenträger 5 Online 931 GB 0 B * Datenträger 6 Online 3726 GB 1024 KB * <== ab hier haben sie keinen Buchstaben Datenträger 7 Online 2794 GB 1024 KB * Datenträger 8 Online 2794 GB 1024 KB * Datenträger 9 Online 3726 GB 1024 KB * Datenträger 10 Online 5589 GB 1024 KB * Datenträger 11 Online 3726 GB 1024 KB * Datenträger 12 Online 9 TB 1024 KB * Datenträger 13 Online 3726 GB 1024 KB * Datenträger 14 Online 9 TB 1024 KB * Datenträger 15 Online 5589 GB 0 B * Datenträger 16 Online 5589 GB 0 B * Datenträger 17 Online 3726 GB 1024 KB * DISKPART>
-
So genau habe ich mich damit auch noch nicht beschäftigt.
Auf die Schnelle habe ich aber folgende Links gefunden:- C++ – Obtain a list of partitions on Windows
- C++ method for Diskpart list disk
- drive.c (Code für USB-Zugriff)
Edit:
In How to list physical disks? stehen auch einige Möglichkeiten (besonders Zugriff auf"\\.\PhysicalDriveX"
sowie mittels Registry inHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\disk\Enum
).