www.mikrocontroller.net

Forum: PC-Programmierung Windows und Dateisystem


Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hat jemand von euch eine ahnung ob und/oder wie man windows ein 
dateisystem hinzufügen kann!?

gruß,
w.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst sowas wie ext3 usw? Einfach die entsprechenden Treiber dafür 
suchen. Den ext2/3 Treiber für Windows gibts z.B. hier: 
http://fs-driver.org/index.html

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht, in dem du einen Treiber dafür schreibst.
Hier ist z.B. ein OpenSource Treiber um ext3 unter Windows zu benutzen.
Die Links auf der Seite sollten dir weiterhelfen dich in die Materie 
einzulesen

http://ext2fsd.sourceforge.net/resources/resources.htm#links

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man kann Windows Dateisystemtreiber unterschieben, dazu gibt es von 
Microsoft das FSDK. Das ist aber noch deutlich schlechter dokumentiert 
als das DDK.

Aus Deinem anderen Postings heraus scheint mir der Ansatz allerdings 
etwas verfehlt; bist Du Dir sicher, nicht mit sehr großen Kanonen auf 
recht kleine Insekten zu schießen?

Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..das ist eine gute nachricht, also das dies möglich ist. danke für die 
schnelle antwort.

für mich ist natürlich wichtig - welche funktionen muss ich bedienen, 
also wie sieht die "Hülle" aus, die ich ausfüllen muss, und womit mache 
ich das am besten.

ich schau mich mal um, mein ziel ist es nicht ein linux fs einzubinden, 
sondern ein eigenes einzubinden.

momentan beschäftigt mich noch die frage, ab wann windows dem laufwerk 
einen l.w.buchstaben zuweisen kann, was ich meine:

wenn ein speichermedium leer ist, also richtig leer, dann zeigt windows:

unzugeordnet/unformatiert und ordnet dem lw KEINEN Buchstaben zu, das 
laufwerk ist lediglich im Festplattenmanager sichtbar, es besteht dann 
die möglichkeit bei windows etwas auf das laufwerk zu schreiben, damit 
diesem ein buchstabe zugeordnet werden kann - es ist nicht der MBR - 
aber was genau wird dort auf das physikalische laufwerk geschrieben.

gruß,
w.

Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@rufus,

ich sehe mich gerade erstmal um, das ganze ist etwas komplexer als es 
erscheint, ich versuche abzuschätzen wie kompliziert es ist ein 
einfaches filebasiertes fs unter windows zu implementieren, da ich nicht 
die möglichkeit habe dem medium ein filesystem zu geben wie  zb fat

gruß,
w.

Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...dabei könnte eben genau das heraus kommen, es sind sicher eine ganze 
menge "anfragen" die man dort "befriedigen" muss, und wenn es dann auch 
noch alles schlecht dokumentiert ist  wie du sagst, dann sehe ich da 
kaum chancen...

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  da ich nicht die möglichkeit habe dem
> medium ein filesystem zu geben wie  zb fat

Es ist ganz erheblich weniger Aufwand, genau das zu ändern.

Autor: whitenoise (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...wenn dann habe ich nur die möglichkeit ein fs unter windows 
einzubinden, dem speichermedium kann ich in diesem speziellen fall kein 
gängiges fs verpassen...

ich kann nur versuchen das format zu unterstützen, oder den kram raw 
auszulesen, das raw auslesen geht bereits, das fs von windows 
unterstützen zu lassen wäre "nice to have".

zu den formatierungsausgaben aus der windows datenträgerverwaltung habe 
ich nochmal einen kleinen screenshot angehängt, das unterste laufwerk 
ist leer, auf dem laufwerk in der mitte war mal ein fat16, hier habe ich 
den mbr gelöscht, dennoch wird ihm ein buchstabe von windows zugeordnet, 
verhält sich also noch nicht ganz so wie das unterste laufwerk.

jetzt ist hier noch die frage, welche informationen könnten dort noch 
gespeichert sein.

gruß,
w.


übrigens, es kann nicht daran liegen das es sich um ein wechselm. 
handelt, da das untere laufwerk auch eines ist.

Autor: whitenoise (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
das zauberwort dort heißt wohl LDM....wer macht nur sowas :_)

http://www.z-a-recovery.com/art-dynamic-disks.htm

gruß,
w

Autor: whitenoise (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
eine möglichkeit gibt es, sozusagen das dateisystem simulieren, also zb 
eine fat plus passende einträge bereitstellen sozusagen festverdrahtet.

also im speicher nur daten, und drumrum eine starre fat, die die 
gesamten daten als datei zur verfügung stellt, sowetwas wäre perfekt.

momentan hakt es dabei gerade an dem verzeichniseintrag, filename im 
root dir:

http://de.wikipedia.org/wiki/FAT16#FAT16

-Datenbereich-

Offset (hex) Länge (in Bytes) Inhalt
00 8 Dateiname ohne Erweiterung
Die nicht genutzten Bytes werden mit Leerzeichen aufgefüllt.
08 3 Erweiterung
Die nicht genutzten Bytes werden mit Leerzeichen aufgefüllt.
0B 1 Dateiattribute.
Bit 0: Schreibgeschützt; Bit 1: Versteckt; Bit 2: Systemdatei; Bit 3: 
Volume-Label; Bit 4: Unterverzeichnis; Bit 5: Archiv; Bit 6–7: ungenutzt
Die zusätzlichen Pseudo-Verzeichniseinträge für VFAT (siehe weiter 
unten) haben das Attribut 0F16 (Schreibgeschützt, Versteckt, 
Systemdatei, Volume-Label)
0C 10 Reserviert
16 2 Zeit (5  6  5 Bits für Stunde  Minute  Sekunden)
Die Auflösung der Sekunden beträgt 2 s (0..29)
18 2 Datum (7  4  5 Bits für Jahr  Monat  Tag)
Jahr: Jahr seit 1980; z. B. für 2007 = 27
1A 2 (Offset des Start-Clusters) + 2
1C 4 Dateigrösse in Bytes
------------------------------------------------------------------------ 
--
diese weitere seite konnte mir dabie auch nicht mehr weiterhelfen... 
damit war es allerding möglich die Lage der Partitionstabelle und der 
FatTable zu bestimmen, sowie die lage des Rootdir und auch die der data 
area.

siehe:

http://home.teleport.com/~brainy/fat16.htm

FAT16 Drive Layout

Offset Description
Start of Partition Boot Sector
Start + # of Reserved Sectors Fat Tables
Start + # of Reserved + (# of Sectors Per FAT * 2) Root Directory Entry
Start + # of Reserved + (# of Sectors Per FAT * 2) + ((Maximum Root 
Directory Entries * 32) / Bytes per Sector)  Data Area (Starts with 
Cluster #2)

das klappt!


 allerdings komme ich mit den angaben bei wickipedia nicht relativ vom 
file eintrag im root dir auf den datenbereich des files.

es sind die bytes 0x1a und 0x1b zusammen gelesen als 0x0002 relativ im 
root eintrag (gelb eingekreist), das grüne ist die größe der datei, es 
ist eine textdatei mit dem inhalt "whitenoise"...

komisch ist auch das so ein fileverweiß immer aus 32byte bestehen soll, 
was also ist der ganze kram vor dem roten kasten (siehe anhang) !? das 
device heißt VOLUME, ist ein stick mit 512MB.

bei wicki steht:

1A 2 (Offset des Start-Clusters) + 2 !?

wie komme ich mit:

0x0002 +2

einer sektorgröße von 0x200 von dem eintrag im root dir 0x45e00 zum 
beginn der datei 0x49e00?

vielleicht hat jemand von euch einen plan!?

gruß,
whitenoise

Autor: whitenoise (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..tschuldigung, so ist der link bei wicki eindeutiger:

http://de.wikipedia.org/wiki/FAT16#Datenbereich

gruß,
w.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bei wicki steht:
>
> 1A 2 (Offset des Start-Clusters) + 2 !?
>
> wie komme ich mit:
>
> 0x0002 +2
>
> einer sektorgröße von 0x200 von dem eintrag im root dir 0x45e00 zum
> beginn der datei 0x49e00?

Bei Wiki ist von Clustern die Rede - das deutsche 
Microsoft-Sprech-Pendant dazu ist "Zuordnungseinheit".

FAT verwaltet nicht Sektoren, sondern ebenjene Cluster. Und die sind je 
nach FAT-Variante und Größe des Datenträgers unterschiedlich groß, immer 
aber eine Zweierpotenz mal ein Sektor groß.
(kleinste Clustergröße ist also 1 Sektor, dann kommen 2, 4, 8, 16, 32 
etc.)



Dein Ansatz erscheint mir im übrigen immer noch verfehlt.

Autor: whitenoise (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo rufus,

aus deiner sich würde ich das auch so sehen...dies ist aber nur ein 
kleiner teil von etwas größerem, desswen strukturen einige dinge nicht 
anders zulassen...


die sectors per cluster sind auf:
0x10 (byte 0xd) im patitionseintrag.

http://de.wikipedia.org/wiki/File_Allocation_Table...

damit ergibt dies sich zu:

offset des startclusters 0x0002 + 2 =
4

4*0x10=0x40

ein sektor hat 0x200 (*0x40) byte, sind dann 0x8000 byte, in 
wirklichkeit sind es aber nur 0x4000 von 0x45e00 bis 0x49e00.

-gibt es evtl noch einen guten link, wo dieser bereich noch etwas 
ausführlicher beleuchtet wird? gerade wegen der bytes vor dem 
filenameeintrag: anhang: RootDirAnd...

gruß,
whitenoise

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.