Entwickler-Ecke

Windows API - virtuelles Laufwerk erstellen ...


Savage - Fr 18.07.03 22:03
Titel: virtuelles Laufwerk erstellen ...
Hi @all

ich habe vor ein virtuelles Laufwerk zuerstellen, welches über ein Programm gesteuert wird - mein Programm soll also z.B.: Ordner und Dateien für dieses Laufwerk virtuell zur verfügung stellen, und ich will dann halt darauf wie ein normales Laufwerk zugreifen können.
Vergleichbar vieleicht mit einen Fileserver, der Dateien für die Auswelt per HTTP oder FTP zur Verfügung stellt, nur dass es halt über ein virtuelles Laufwerk geschehen soll.

Ich habe bloß leider keine Ahnung wie das funktionieren könnte.

Hat jemand ein paar nützliche Tipps für mich?
Wäre sehr Dankbar :)

MfG
Savage


MSCH - Fr 18.07.03 23:38

imho geht das nur via Gerätetreiber - und mit Delphi ist leider nicht möglich solche zu pinseln. Bleibt entweder nur der Griff in die "C" Kiste oder auf Tools von Drittanbieter ausweichen.
grez
msch


maxk - Sa 19.07.03 11:02

Dito, das Delphi nicht zur Gerätetreiberentwicklung geeignet ist habe ich inzwischen oft gelesen. Aber warum eigentlich?

Zum Thema: Mit C einen Treiber schreiben, der sich über deine Delphianwendung steuern läßt. Das ist das Beste, das mit gerade einfällt.

maxk


AndyB - Sa 19.07.03 11:41

maxk hat folgendes geschrieben:
Dito, das Delphi nicht zur Gerätetreiberentwicklung geeignet ist habe ich inzwischen oft gelesen. Aber warum eigentlich?

Weil Delphi nicht von Microsoft ist und die stellen nun mal das DDK zur Verfügung. Man müsste also tausende von Header Dateien nach Delphi übersetzen. Wobei MS dort sehr sehr viel mit Makros und Templates gearbeitet hat. Wenn man das nach 2 Jahren geschaft hat kommt die nächste Hürde. Man muss Teile der .lib Dateien in .obj Dateien extrahieren und diese dann in das von Borland genutzt Format konvertieren (leichtester Schritt). Den WDM Treiber kann man nun kompilieren. Es ist damit aber nicht getan, denn der Delphi Linker kann keine Dateien erzeugen, die der Kernel akzeptiert. Dafür muss man den PE-Header von Hand verändern. Danach geht das Debuggen los. Man muss ja sicherstellen, dass 1. die Header-Dateien richtig übersetzt wurden und 2. man keinen Fehler im Treiber hat. Der Integrierte Debugger von Delphi kann dabei aber nicht helfen.

Im Großen und Ganzen rentiert sich die Konvertierung der Header-Dateien schon aus Zeitgründen nicht. Zudem muss man auf alle Delphi-Angenehmlichkeiten verzichten. Da kann man gleich das Visual Studio kaufen und mit VC++ den Treiber schreiben.


maxk - Sa 19.07.03 12:24

Okay, ich fang dann schon mal an :mrgreen:


Ja-Pa - Mo 21.07.03 13:40
Titel: Vielleicht mit subst?
Hi,

es gibt unter allen Win-Versionen und DOS die Möglichkeit, ein virtuelles Laufwerk zu erstellen und zwar mit folgendem DOS Befehl:
subst <Laufwerksbuchstabe> "<Ordner>"
Beispiel: subst X: "C:\Programme"
So entsteht ein virtuelles Laufwerk X:, das auf den Ordner C:\Programme verknüpft, also den Inhalt von C:\Programme hat.
Das Laufwerk verschwindet allerdings bei jedem Windows-Neustart, muss also immer wieder aktualisiert werden.
Du könntest es mal versuchen, einen versteckten Ordner zu erzeugen, dort den Inhalt des virtuellen Laufwerks hineinzukopieren und dann mit deinem Delphi-Programm das Programm
command.com (bei Win NT/2000/XP cmd.exe) mit dem String oben (subst...) als Parameter auszuführen.
Ich hoffe, ich konnte dir weiterhelfen.

Gruß, Ja-Pa


maxk - Mo 21.07.03 17:32

Für subst gibt es auch API Aufrufe, mit denen man sich das Starten von subst sparen kann - obwohl es eine sehr unsaubere und unkomfortable Methode ist (zu wenig Kontrolle)


Savage - Mo 21.07.03 17:34

erstmal thx an alle,

subst ist zwar schon mal ein Anfang aber noch nicht so richtig das, was ich wollte. Naja, trotzdem DANKE :)

Ich werd das jetzt über ne Drittsoftware machen und sowas wie Webdrive laufen lassen. Somit brauch ich nur noch einen FTP-Server zuschreiben und hab dann meinen Spaß ;)

mfg
Savage