Hallo,
ich zeichne Messdaten mit einem Mikrocontroller (Arduino) auf SD-Karte auf. Leider kommt es dabei aus verschiedenen Gründen vor, dass Dateien nicht lesbar sind, z. B. auch, weil sie nicht abgeschlossen wurden. Die belegten Sektoren sind in der FAT eingetragen, aber im Inhaltsverzeichnis ist Länge=0 angegeben. Der Fehler ist mit einem üblichen Diskeditor leicht zu beheben, wenigstens, wenn es nur wenige Dateien auf der Karte gibt. Vorteilhaft ist, dass jede SD-Karte vor der Verwendung formatiert wird. Aber wenn es Hunderte von Dateien auf der Karte gibt, dann ist das Rekonstruieren schon einzelner Dateien dem Diskeditor so mühsam. dass ich es noch nicht gemacht habe. Aber der Algorithmus zur Wiederherstellung ist einfach und wäre schnell in Delphi zu programmieren.
Nun meine Frage: In der Hilfe zur Windows-API zu createFile steht, das man damit auch physikalische Laufwerke öffnen könne. Das gelingt mir aber nicht. Hier mein Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| Filename:= 'f'; SD:=createFile(PChar(FileName),GENERIC_READ,0,0,3,FILE_ATTRIBUTE_NORMAL,0); if SD = INVALID_HANDLE_VALUE then Memo1.lines.add('Invalid Handle') else .... |
Hat da jemand eine Idee, wie das gehen könnte?
Gruß
GuaAck