AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Laufwerksbuchstaben aus device-name ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Laufwerksbuchstaben aus device-name ermitteln

Ein Thema von Gerd01 · begonnen am 26. Jul 2007 · letzter Beitrag vom 30. Jul 2007
 
Olli
(Gast)

n/a Beiträge
 
#6

Re: Laufwerksbuchstaben aus device-name ermitteln

  Alt 27. Jul 2007, 06:11
Wie steht's mit session-lokalen Gerätenamen (und Laufwerksbuchstaben)?

Zitat von Gerd01:
Zitat von Robert Marquardt:
Gibt es das /device/cdrom0 ueberhaupt?
Ja sicher es gibt auch /device/cdrom1 und weitere wenn du mehrere CD_laufwerke hast.
Soso und in welchem Namensraum ist das? Sieht ein bißchen linuxig aus, ist aber nicht Cygwin oder SFU. Robert's Frage hat hier durchaus ihre Berechtigung und Reinhard hat den korrekten Weg aufgezeigt. Von Win32 aus kannst du ohnehin nur implizit über DefineDosDevice() mit dem Flag DDD_RAW_TARGET_PATH auf das Objektverzeichnis \Device zugreifen. Ich vermute mal, daß es das ist was du meinst. Sonst bleibt für dich nur auf \??\CdRomX (was üblicherweise automatisch vom System angelegt wird und auf das entsprechende \Device\CdRomX zeigt) zuzugreifen.

Ansonsten ist das Anliegen an sich schon ... nunja ... fragwürdig, weil nämlich der Gerätename (\Device\*) immer eindeutig ist, ein Laufwerksbuchstabe hingegen nicht. Bei einem System mit 2 Festplatten und einem CD-ROM-Laufwerk kann ich bspw. auch, nachdem C: und D: für die Partitionen vergeben sind, die Laufwerksbuchstaben E: bis Z: für das (gleiche!) CD-ROM-Laufwerk vergeben. Mag zwar seltsam klingen, ist aber gut und gern möglich und vor allem vollkommmen legitim!

Die Funktion GetDosDevice() wie oben dargestellt wird übrigens schon auf einem "normalen" System (wo man ein 1:1-Mapping hat) nicht immer funktionieren, weil man nämlich auch dort die Buchstaben in einer anderen Reihenfolge als in welcher die Geräte logisch beim "Gerätemanager" angemeldet wurden auf Laufwerksbuchstaben mappen kann. Laufwerk R: kann gut und gerne auf \Device\CdRom3 verweisen, während U: bis W: auf \Device\CdRom0 bis \Device\CdRom2 verweisen. Was dann? Die o.g. Funktion GetDosDevice() baut dann mal eben Mist. Abgesehen davon kann man bestimmte CD-Laufwerke auch entfernen, so daß CdRom0 nicht immer das erste gültige Gerät in einem laufenden System sein muß.

Ich würde dringend empfehlen mal WinObj von Sysinternals runterzuladen und dort mal ein wenig durch den Namensraum des NT-Objektmanagers browsen, damit du ein Gefühl dafür bekommst was eigentlich so unter der Haube los ist.
  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 21:11 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