Diese Informationen sind über die Defrag-API zugänglich . Defragmentierungstools von Drittanbietern werden möglicherweise verfügbar gemacht. Auf aktuellen Windows-Systemen (8.1 funktioniert, 7 nicht getestet) können Sie fsutil
es abfragen:
C: \> fsutil-Datei queryextents example.txt VCN: 0x0 Cluster: 0x2 LCN: 0x18f85e
Es gibt auch einen weiteren Unterbefehl, der alle Informationen für alle Datenströme in der Datei speichert:
C: \> fsutil Volume-Dateilayout example.exe ********* Datei 0x01390000000008dd ********* Referenznummer der Datei: 0x01390000000008dd Dateiattribute: 0x00000020: Archiv ... Stream: :: $ FILE_NAME Attribute: 0x00000000: * NONE * Flags: 0x0000000c: resident | Keine Cluster zugewiesen Größe: 80 Zugewiesene Größe: 80 Stream: :: $ DATA (der Hauptdatenstrom) Attribute: 0x00000000: * NONE * Flags: 0x00000000: * NONE * Größe: 1681920 Zugewiesene Größe: 1683456 Ausdehnungen: 1 Ausdehnungen : 1: VCN: 0 Cluster: 411 LCN: 8527618
In der Ausgabe beider Befehle erhalten Sie für jede "Ausdehnung" (einen zusammenhängenden Bereich von Clustern) die "virtuelle Clusternummer" (Versatz vom Anfang der Datei), die Anzahl der Cluster in der Ausdehnung und die "logische Clusternummer" ( versetzt vom Anfang des Volumens).
Hinweis: Kleine Dateien, die in den MFT-Basisdatensatz passen, werden in ihrem MFT-Datensatz gespeichert ("resident") und haben keine Ausdehnungen. Für diese müssen Sie andere Möglichkeiten nutzen, um die MFT selbst zu durchsuchen. (In einigen Fällen ist die Datei möglicherweise spärlich und weist nur einen kleinen Teil auf der Festplatte auf; der Rest wird nur als null Byte angenommen.)
Die Cluster sind auf Dateisystemebene, daher müssen Sie sie in Sektoren auf Blockgerätebene konvertieren. Mein System verfügt über 8 Sektoren pro Cluster:
C: \> fsutil fsinfo ntfsinfo c: ... Bytes pro Sektor: 512 Bytes pro Cluster: 4096 ... C: \> set / a 0x18f85e * (4096/512) 13091568 C: \> set / a 0x18f85e * 4096 6702882816
Das heißt, Sie können \\.\C:
mit HxD oder ähnlichem öffnen und den Anfang der Datei im Sektor 13091568 (oder Byte 6702882816) finden.