2011-01-17 7 views
1

Ich dachte daran, mit meinem eigenen Dateisystemcode herumzuspielen, als Lernübung. Zu Beginn könnte dies ein RAM-Laufwerk sein, oder einfach nur in einer Datei auf einem anderen Laufwerk. Fragen:Welche APIs brauche ich, um meinen eigenen Windows-Laufwerksbuchstaben zu schreiben?

  1. Welche Windows-APIs würde ich programmieren muss meine eigenen Laufwerksbuchstaben zu implementieren (zB M: mit meinem System)
  2. Wo ist die Dokumentation für diese APIs?
  3. Können Sie sie mit C# implementieren?

NB:

  • Ich weiß, es gibt auch andere RAM-Laufwerk-Implementierungen gibt - ich nicht eine Liste von ihnen benötigen.
  • Ich habe versucht zu googeln, aber fand es sehr schwer, die richtigen Suchbegriffe zu finden.
  • Ich bin jetzt über die Windows-Version nicht pingelig, jede Version ist in Ordnung, ich bin mit Windows 7 zu entwickeln, aber ich hoffe, dass Version für früheres Windows noch
  • einen Blick auf
+1

Sie könnten immer den guten alten '' subst 'Befehl verwenden :) – leppie

+0

DefineDosDevice().Sie müssen zuerst das Gerät haben, da stoppt der C# -Bock. Lesen Sie Walter Oneys Bücher. –

Antwort

1

Aus dieser Antwort auf eine ähnliche Frage: how to map a software as a Drive?

einen Blick auf Dokan haben. Es sieht wie ein netter skriptfähiger Wrapper für Low-Level-Dateisystemtreiber aus. Wie FUSE unter Linux.

Die docs page Erwähnung, dass Sie es verwenden können, um Dateisystemcode in C#, VB, C++ und sogar Ruby zu schreiben! Da es sich als .Net-Bibliothek ausgibt, schätze ich, dass Sie es in jeder Sprache, die auf der CLR läuft, auch als IronPython oder F # ausführen können.

3

Nehmen Sie arbeitet die IFS (Installable Filesystem) Kit.

Sie sprechen über das Schreiben eines Dateisystemtreibers. Das grundlegende Modell ist, dass Ihr Code in den NT-Kernel geladen wird und IRPs verarbeitet.

Nein, Sie können es nicht in C# tun.

3

Sie müssen auf das Windows DDK - jetzt scheinbar "WDK" zu sehen. Das WDK enthält das Kit Installable File Systems (IFS). Siehe hier: Installable File Systems (IFS) kit

Gerätetreiber unter Windows sind in C/C++ geschrieben. Soweit ich weiß, gibt es keine Möglichkeit, einen Dateisystemtreiber in .NET zu implementieren. Es gibt keine CLR im Kernel-Bereich.

EDIT: asveikau schlug mich zu ihm ...

0

Je nachdem, was Sie benötigen (implementieren Sie ein Dateisystem oder nur eine virtuelle Festplatte mit einem vorhandenen Dateisystem), können Sie eines unserer virtuellen Speicherprodukte verwenden: Callback File System bzw. CallbackDisk.

Der Unterschied besteht darin, dass CallbackDisk eine Plattenvorrichtung emuliert (so können Sie montieren, zum Beispiel ISO-Image gibt) und Callback File System kann Sie Ihr eigenes Dateisystem aufbauen (z. B. verteilt, oder einfach nur entfernt gespeichert)

.NET-APIs sind in beiden Produkten verfügbar.

Verwandte Themen