AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CD-Laufwerkslade offen?

Ein Thema von Garfield · begonnen am 25. Nov 2006 · letzter Beitrag vom 25. Mär 2008
 
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#9

Re: CD-Laufwerkslade offen?

  Alt 25. Mär 2008, 06:53
Ich habe mal wieder versucht, mittels IOCTL zum Erfolg zu kommen.

Bei der Funktion:
Delphi-Quellcode:
Result := DeviceIOControl(DriveHandle,
                          IOCTL_STORAGE_CHECK_VERIFY,
                          NIL,
                          0,
                          NIL,
                          0,
                          nb,
                          NIL);
ist Result = False, wenn die Schublade geöffnet ist oder sich in der geschlossenen Schublade kein Datenträger befindet. Befindet sich in der Schublade ein Datenträger ist Result = True.

Mit der Funktion:
Delphi-Quellcode:
var
  VolumeLabel : Array[0..$FF] of Char;
  FileSystem : Array[0..$FF] of Char;
  SerialNumber: DWord;
  DW : DWord;
  FileSysFlags: DWord;
...

begin
...
Result := GetVolumeInformation(PChar(Format('%s:\', [cDrive])),
                               VolumeLabel,
                               SizeOf(VolumeLabel),
                               @SerialNumber,
                               DW,
                               FileSysFlags,
                               FileSystem,
                               SizeOf(FileSystem));
lässt sich dann feststellen, was eingelegt ist. Bei einer bespielten CD bzw DVD ist Result = True und VolumeLabel gibt den Namen des Datenträgers und das FileSystem CDFS oder beispielsweise UDF zurück. Ist der Datenträger leer, ist in der Regel Result = False und die Fehlermeldung heißt: "Unzulässige Funktion". In der Regel bedeutet, dass ich beim Einlegen eines CD-Rohlings Result = True und FileSystem = '' erhielt. Wurde dann ein DVD-Rohling eingelegt war Result = False. Anschließend ergab ein CD-Rohling ebenfalls das Ergebnis 'Unzulässige Funktion'.

Nachtrag: In der MSDN ist angegeben, dass IOCTL_STORAGE_CHECK_VERIFY keine Daten zurückliefert. Dem ist jedoch nicht so. Wenn man den lpOutBuffer verwendet, hat man einen Zähler, wie oft das Laufwerk geöffnet und geschlossen wurde. Der Zähler beginnt mit dem ersten Aufruf.
Angehängte Grafiken
Dateityp: png bild1_213.png (10,0 KB, 22x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 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-2025 by Thomas Breitkreuz