Frage

ließ ich meinen Laptop, während Windows war die Vorbereitung in den Ruhezustand und als Ergebnis bekam ich einen Head-Crash auf der Festplatte. (Lehrt mich eine Festplatte zu bekommen und / oder Laptop mit einem freien Fall Sensor beim nächsten Mal.) Wie auch immer, laufen SpinRite zu versuchen, die Daten wiederherzustellen, hat sich in allen den freien Sektoren auf der Festplatte geführt, um alle für die ganze alle ausgeschöpft werden erzielbare Sektoren so weit. SpinRite ist noch im Gang, jetzt, aber da wird es nicht mehr Ersatz-Sektoren zu nutzen, ich denke, es wird außer eine fruchtlose Übung sein, mir zu sagen, wo alle schlechten Sektoren sind.

Wie auch immer, ich habe vor, einen Antrag auf dem Schreiben zu retten Daten von der Festplatte zu versuchen. Aus meiner Vergangenheit Vorstöße in defragmentieren, ich weiß, dass ich FSCTL_GET_RETRIEVAL_POINTERS-, um herauszufinden, die logischen Clusternummern für jede gegebene Datei verwenden können.

Wie gehe ich um den Versuch, die Sektoren für die eigentlichen Cluster zu lesen? Mein Graben durch MSDN Auflistung für Datenträger, Datei- und Volume Device Control Codes hat mich nicht hatte etwas herausspringen als so, wie ich zu den eigentlichen Cluster-Daten erhalten.

Soll ich auch nicht die Mühe versucht, auf diesem niedrigen Niveau zu lesen? Sollte ich stattdessen SetFilePointer tun () und Readfile () ruft in den entsprechenden Cluster in die Datei Größe Offsets zu erhalten und lesen Cluster Chunks?

Wenn die Datei Ich versuche, einen schlechten Sektor zu lesen, wird NTFS markieren die gesamte Datei als schlecht und verhindert, dass ich die Datei in der Zukunft zugreifen? Wenn ja, wie kann ich feststellen, NTFS die Datei nicht so schlecht, oder tot zu markieren? (Denken Sie daran, dass die HD ist jetzt aus freien Sektoren neu zugeordnet werden.)

Soll ich den Staub von meinem * nichts Wissen und herauszufinden, wie von / dev /?

lesen

Update: Ich fand die Antwort auf meine eigene Frage. :-) Die Lösung macht SetFilePointer () und Readfile () auf dem Volumen handle und nicht auf der Datei-Handle.

War es hilfreich?

Lösung

fand ich die Antwort auf meine eigene Frage. :-) Die Lösung macht SetFilePointer () und Readfile () auf dem Volumen handle und nicht auf der Datei-Handle.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top