Frage

(Diese Frage ist ein toughie ... es könnte Kenntnis von NTFS erfordern und / oder die Verwendung von NT Native API, gewarnt werden.):)

Wenn mir zwei HANDLEs in zwei Dateien gegeben, wie kann ich endgültig (nicht nur mit hohen Wahrscheinlichkeit) herauszufinden, ob die beide HANDLEs auf die exakt gleiche Datei und Strom auf der Platte gehört?

Das bedeutet zum Beispiel, von den oberen 8-Byte-NTFS-Dateikennungen ist nicht genug, denn zwei HANDLEs mit der gleichen ID-Datei können unterschiedliche Datenströme der gleichen Datei zeigen auf, und ich brauche das, um herauszufinden, ob zwei Ströme sind wirklich gleich und unterscheiden sich nur durch den Namen (Hardlink).

(Was nützt das? Auf diese Weise, wenn ich auf alle Dateien in einem Ordner eine Operation ausgeführt werden soll, mache ich nicht den Betrieb zweimal auf dem gleichen Datenstrom mit unterschiedlichen Namen.)

War es hilfreich?

Lösung

Dies erfordert GetFileInformationByHandleEx (), Bitte um FileStreamInfo. Das gibt den Stream-Namen.

Diese Warnung in der SDK-Dokumentation sollte beachtet werden:

Bestimmte Dateiinformationsklassen etwas anders verhalten auf unterschiedliche Betriebssystemversionen. Diese Klassen werden unterstützt durch die Treiber zugrunde liegen, und jede Informationen, die sie zurückkehren unterliegt Wechsel zwischen Betriebssystem Mitteilungen.

Vermeiden Sie sich auf Informationen, die Rückgewinnung (oder sein sollte) leicht zugänglich in Ihrem Programm.

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