Projekte > Optische Laufwerke > Laufwerke

Zähler

Die Windows Funktion CreateFile erlaubt die Verwendung von Device Namespaces, dass bedeutet, man kann mit CdRom gefolgt von einem Zähler das Handle auf ein Laufwerk erhalten. In der Demo wird bei der Erstellung der Klasse beginnend mit 0 versucht das Handle zu erhalten:

 
  function TOptDrives.DriveHandle(aDrive: Integer): THandle;
  {********************************************************************************
  *  Das Handle zu dem mit den Buchstaben bezeichneten Laufwerk holen.
  }
  var
    dwDesiredAccess : Cardinal;
    dwShareMode     : Cardinal;
  begin
    dwDesiredAccess := GENERIC_READ or GENERIC_WRITE;
    dwShareMode     := FILE_SHARE_READ or FILE_SHARE_WRITE;
    Result          := CreateFile(PAnsiChar(Format('\\.\cdrom%d', [aDrive])),
                                  dwDesiredAccess, dwShareMode,
                                  nil, OPEN_EXISTING, 0, 0);
  end;
 
  constructor TOptDrives.Create;
  {********************************************************************************
  *  Class erstellen.
  }
  var
    hDevice : THandle;
  begin
    {
    *  Handle auf erstes Laufwerk holen.
    }
    fCount := 0;
    hDevice := DriveHandle(fCount);
    {
    *  So lange ein gültiges Handle vorliegt, Laufwerk eintragen und Informationen
    *  holen.
    }
    while hDevice <> INVALID_HANDLE_VALUE
    do begin
      {
      *  Handle auf das nächste Laufwerk holen.
      }
      inc(fCount);
      hDevice := DriveHandle(fCount);
    end;
  end;
          

Das Ergebnis des Beispiels sieht so aus:

Counter (podCounter.7z - 224 kb) MD5 (1 kb). Stand: 28. April 2013

Änderungen an der Demo

Datum Beschreibung
28.04.2013Kleine Überarbeitung und neuer Name.
04.04.2013Überarbeitung.