Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wird DVD im Laufwerk gerade formatiert (https://www.delphipraxis.net/172335-wird-dvd-im-laufwerk-gerade-formatiert.html)

terence14 27. Dez 2012 13:34

Wird DVD im Laufwerk gerade formatiert
 
Liebe DP-Gemeinde,

gibt es einen Befehl, mit dem ich aus meinem
Delphi Programm heraus prüfen kann, ob das
Windows Betriebssystem (Explorer) gerade meine DVD
im Laufwerk formatiert (und dann beschreibt),

um in dieser Zeit NICHT auf dieses Laufwerk (aus
meinem Delphi Programm heraus) zuzugreifen?

Mein BS: Windows Vista 32bit
Mein Delphi: D2005

MfG,
terence

jaenicke 27. Dez 2012 13:52

AW: Wird DVD im Laufwerk gerade formatiert
 
Also bei mir kommt dann schlicht ein "Zugriff verweigert", bist du sicher, dass die Prüfung darauf wirklich nötig ist?

Dalai 27. Dez 2012 13:55

AW: Wird DVD im Laufwerk gerade formatiert
 
DVDs werden nicht formatiert. Ausnahme: DVD-RAM und DVD-RW mit UDF-Dateisystem (wobei man von letzterer Kombination sowieso die Finger lassen sollte).

Das bedeutet: auf aktive Formatierung prüfen zu wollen, ist ziemlich sinnfrei, weil ungenau, daher sollte man sich an einen anderen Vorgang halten, der unabhängig vom Medium aktiv sein könnte: das Brennen selbst.

MfG Dalai

terence14 28. Dez 2012 09:57

AW: Wird DVD im Laufwerk gerade formatiert
 
Hallo und danke für die schnellen Antworten.

1) Wenn ich im Explorer Dateien auf eine leere DVD-RW
kopiere, kommt die Meldung: Datenträger wird 4.7 GB
formatiert.

Dann, nach ca. 10 Sekunden erscheint das Explorer-
Fenster xxx Dateien in xxx Bytes werden kopiert.

Ist der Kopiervorgang abgeschlossen und ich werfe
den Datenträger aus, kommt in der Taskleiste ein
Balloon-tipp:
"Warten Sie, bis der Datenträger abgeschlossen wird,
damit er auf anderen Computern verwendet werden kann."

2) Wenn ich nun während dieses Vorganges folgenden
Delphi Code ausführe,

Delphi-Quellcode:
         var prvDVDDrives : string[24];

         procedure TForm1._getDVDDrives;
         var drivemap, mask : DWORD;
              i : integer;
              driveStr : string[24];
              root : string;
         begin
         driveStr:='';
         root:='A:\';
         drivemap:=GetLogicalDrives;
         mask:=1;
         for i:=1 to 32 do begin
             if ((mask and drivemap) <> 0) then
                if (GetDriveType(PChar(root)) = DRIVE_CDROM) then
                   driveStr:=driveStr+root[1];
             mask:=mask shl 1;
             inc(root[1]);
         end;
         {-}
         prvDVDdrives:=driveStr+#0;
         end;
dann habe ich in prvDVDdrives alle Laufwerksbuchstaben stehen,
die im OS für ein DVD Laufwerk stehen.
Also z.B: prvDVDdrives:='F';

Das funktioniert so lange, bis ich eben etwas mit Hilfe
des Win-Explorers auf F: schreibe.

Dann kopiert der Explorer und kopiert und kopiert...
Ich kann dann nicht mehr auf F: zugreifen, und muß
im Taskmanager den Explorer beenden.

Startet dann die Windows Oberfläche neu, ist der Datenträger
in F: kaputt, kann weder gelesen noch sonstwas werden.

Da während des Formatierens (und Schreibens) mit dem
Win-Explorer KEIN extra Process gestartet wird, kann ich auch
nicht in meinem Programm auf solch einen laufenden Process
prüfen, bevor ich obigen Delphi-Code ausführe, um eben dann
diese Ausführung zu verhindern.

MfG,
terence

terence14 30. Dez 2012 12:57

AW: Wird DVD im Laufwerk gerade formatiert
 
Habe mein Problem jetzt gelöst.

Lösung im Anhang:
PStopReadDVDDrives-Test_2012_12_30.zip (464,9 KB)

MfG,
terence


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz