Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

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

Re: Wird auf CD-Rom zugegriffen

  Alt 7. Apr 2007, 00:46
Zitat von VizeTE:
Ich habe versucht was zur Statusabfrage herauszufinden. In Beiträgen wird oft auf die Funktionen DeviceIOControl und mciSendString verwiesen. Dabei ging es aber immer um die Abfrage ob das Laufwerk geöffnet oder geschlossen ist.
Ob ein Kaufwerk geöffnet oder geschlossen ist, kannst Du im fünften Beitrag dieses Threads sehen. Dafür sind Schreib-/Brennrechte erforderlich.

Die Prüfung, ob auf die CD/DVD zugegriffen werden kann, kannst Du mit CreateFile erledigen. Ob auf eine eingelegte CD/DVD zugegriffen werden kann, kann man mit DeviceIOControl prüfen. Für NT, 2000 und XP zum Beispiel
Delphi-Quellcode:
...
uses
  Windows, SysUtils;
...

function Drive_Access (const Drive: Char; var Status: Integer) : Boolean;
const
  IOCTL_CDROM_CHECK_VERIFY = 149504;
var
  DrivewHandle : THandle;
  nb : DWord;
begin
  Result := False;

  DriveHandle := CreateFile(PChar('\\.\' + Drive + ':'),
                            GENERIC_READ,
                            FILE_SHARE_READ,
                            NIL,
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL or FILE_FLAG_NO_BUFFERING,
                            0);

  nb := 0;

  if DriveHandle <> INVALID_HANDLE_VALUE
  then
    Result := DeviceIOControl(DriveHandle,
                             IOCTL_CDROM_CHECK_VERIFY,
                             NIL,
                             0,
                             NIL,
                             0,
                             nb,
                             NIL);
 
  Status := GetLastError;

  CloseHandle(DriveHandle);
end;
Anstelle von GetLastError kann man sich auch den entsprechenden String holen. Die Function funktioniert auch mit eingeschränkten Rechten da keine Schreib-/Brennrechte benötigt werden.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat