Überprüfen ob eine CD im Laufwerk ist
-
Guten Abend zusammen,
Ich schreib grad ein Front End für ein anderes Tool. Dafür schaue ich zuerst welche Laufwerke es gibt, dann filtere ich sie nach CD-ROM Laufwerken aus (auch das muss ich schon über die WinAPI machen). Danach sammle ich eben Informationen zu den CD-ROM Laufwerken. Ein ganz wichtiger Punkt wäre, zu erfahren ob eine CD im Laufwerk ist.
Einen Umweg habe ich über den Aufruf der WinAPI Funktion GetDiskFreeSpaceEX gefunden. Bei dem überprüfe ich, ob Daten im Laufwerk vorhanden sind. Das Problem: Wenn keine CD im Laufwerk ist habe ich zwar mein Ergebnis wie ich es wollte, aber das Programm beschwert sich logischerweise darüber, dass keine CD im Laufwerk vorhanden sei.
Jetzt gäb zwei Dinge die mir weiterhelfen können.
1. Wie könnte ich diese Fehlermeldung unterbinden
2. Welche andere Funktion kann ich dazu benutzen um zu überprüfen, ob eine CD im Laufwerk vorhanden ist.Gruß
Markus Seidl
-
Hat sich schon erledigt. Ich hatte die Lösung schon vor meiner Nase. Ich hatte GetVolumeInformation schon im Quelltext drin. Wusste aber nicht, dass ich einfach den Rückgabewert davon dazu hernehmen kann, um zu ermitteln ob ein Datenträger eingelegt ist.
Sorry für die Belästigung, ich schreib aber den Quelltext einfach mal rein, damit es für Später hilft.
[DllImport("kernel32.dll")] public static extern bool GetVolumeInformation( string rootPathName, [Out] System.Text.StringBuilder volNameBuffer, int volNameSize, out int volSerialNumber, out int maxComponentLength, out int fileSysFlags, [Out] System.Text.StringBuilder fileSystemName, int fileSystemNameSize ); bool driveReady = GetVolumeInformation(driveLetter , volName, volName.Capacity, out volSer, out maxCmp, out sysFlgs, fileSysName, fileSysName.Capacity);
Mit driveReady lässt sich dann hinterher überprüfen ob ein Datenträger eingelegt ist. An GetVolumeInformation übergibt man eigentlich nur den "driveLetter". Alle anderen sind leere Variablen die man übergibt, und die man hinterher wieder auswerten kann.
Gruß
Markus Seidl