AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Disketten sektorweise lesen/schreiben

Ein Thema von zeras · begonnen am 11. Nov 2012 · letzter Beitrag vom 12. Nov 2012
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 12:20
Kommt darauf an mit welchem Betriebssystem, bzw. wie weit Du nach "unten" gehen willst.
Die klassische Dos-Methode geht über den Int13, wobei Du allerdings das Layout der Diskette kennen solltest. Eine andere Möglichkeit ist der (Dos)Int25, der allerdings Cluster liest. (Wenn ich mich richtig erinnere)
Unter Windows kannst du mit createfile direkt auf das Medium zugreifen. Die Details hab ich allerdings nicht im Kopf, da solltest Du vllt. nach Bootsektor/CD-Lesen suchen.
Delphi-Quellcode:
  hVolumeHandle := CreateFile(PChar(sVolumeName), GENERIC_READ or GENERIC_WRITE,
                              FILE_SHARE_READ or FILE_SHARE_WRITE,
                              nil, OPEN_EXISTING, 0, 0);
Bleibt die Frage, was Du konkret vorhast, da modernere Festplatten nicht mehr über Sektor,Spur,Kopf angesteuert werden, sondern nur noch über die Sektor-Nummer, wobei nicht gewährleistet ist, das Sektor N+1 nicht unbedingt physisch hinter Sektor N liegt.

Ggf. wäre der in Windows eingebaute SCSI-Mapper für Dich von Interesse, der für alle Massenspeicher-Medien eine ähnliche Schnittstelle bietet.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.654 Beiträge
 
Delphi 12 Athens
 
#2

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 12:39
Bleibt die Frage, was Du konkret vorhast, ....

Gruß
K-H
Um konkreter zu werden. Wir nutzen einen Diskettenemulator, der seine Abbilder auf eine CF-Karte schreibt. Auf der CF-Karte ist dann eine große Datei, wo viele solche Abbilder reinpassen. Dies ist alles "diskettenbasiert", d.h. es werden immer jeweils ein oder mehrere Diskettenabbilder dort reingepackt. Diese Abbilder muss ich finden, dann irgendwie wieder auf ein Dateisystem übertragen. Danach kann ich dann auf die Diskettenabbilder zugreifen. Im Endeffekt brauche ich einen eigentlich einen virtuelles Diskettenlaufwerk im Speicher, um dann die Images reinzupacken und dann auf die Daten zugreifen zu können. Das sollte aber ohne einen Treiber gehen. Wenn ich das hinbekomme, dass ich im Speicher ein array mit 1,44MB einrichten kann, dann aber filebasiert zugreifen kann. Das wird die größte Hürde sein. Wenn das nicht gehen sollte, dann müßte ich vfdisk einrichten, dann ein Abbild von 1,44 MB aus dem großen File holen, vfdisk sagen, dass eine Datei mit 1,44MB dort liegt und dann kann ich mittels normalen Diskettenzugriffen aus dem virtuellen vfd Laufwerk die Daten lesen.
Aber vielleicht hat jemand auch eine andere Idee?
Also Diskettenimage von 1,44MB vorhanden, aber Zugriffe sollen dateibasiert sein und nicht sektorbasiert.
Ich hoffe, dass ich das so einigermaßen erklären konnte.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 12:51
Wenn ich das richtig verstanden habe, hast Du ein Diskettenimage, auf das Du zugreifen möchtest, als ob es ein normales Medium sei.
Ggf. ist es das einfachste, Deine Daten auf einen (superFloppy)-Usb-Stick zu klatschen, und diesen dann zu lesen?

So ganz ohne FS-Treiber, scheint mir nicht möglich zu sein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.654 Beiträge
 
Delphi 12 Athens
 
#4

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 13:00
Wenn ich das richtig verstanden habe, hast Du ein Diskettenimage, auf das Du zugreifen möchtest, als ob es ein normales Medium sei.
Ggf. ist es das einfachste, Deine Daten auf einen (superFloppy)-Usb-Stick zu klatschen, und diesen dann zu lesen?
Ja, so soll das sein. Was meinst du mit "superfloppy"-USB Stick? Einen realen Stick mit 1,44MB? Das wäre die schlechteste Alternative. Wenn, dann müßte ich doch einen virtuellen Treiber wie vfd oder Imdisk nutzen. Dann bräuchte ich keine extra Hardware.

So ganz ohne FS-Treiber, scheint mir nicht möglich zu sein.
Was meinst du mit "FS-Treiber"? Ist damit FileSystem Treiber gemeint?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#5

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 13:08
Hex-Editor
http://www.delphipraxis.net/39594-hx...am-editor.html
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.654 Beiträge
 
Delphi 12 Athens
 
#6

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 13:14
Was meinst du damit?
Im Moment nutze ich schon einen Hexeditor, aber ich muss ein fertiges Programm erstellen, wo ich aus einem Diskettenimage eine oder mehrere Dateien auslesen kann.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#7

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 13:33
Ah, ich jetzt hab ich das Problem erst verstanden:
Du willst nicht den Inhalt des Laufwerks dem System verfügbar machen, sondern einzelne Dateien aus dem Image extrahieren?

Dann müsstest du FAT16 oder FAT32 implementieren (je nach Format der Disketten und zumindest für den Lesezugriff).
FAT16 ist nicht so kompliziert wie man denken könnte und es finden sich genug Informationen darüber im Internet.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#8

AW: Disketten sektorweise lesen/schreiben

  Alt 11. Nov 2012, 13:13
Ist damit FileSystem Treiber gemeint?
So gut wie sicher. Die "billige" Alternative dazu wäre es, wenn du den Dateiinhalt über ein Netzwerkprotokoll verfügbar machst und als "Netzwerklaufwerk" einbindest.
Leider ist auch das viel Arbeit und WebDav als relativ einfaches Protokoll wird leider von Windows nicht so unterstützt, dass es nutzbar wäre ... da Dateien auf Diskette klein sind, könnt es aber vielleicht trotzdem funktionieren.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:55 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