2010-11-18 4 views
0

Ich habe einen C++ - Algorithmus entwickelt, der den Inhalt eines USB-Sticks in einer Datenbank speichert. In der Datenbank, sowie zum Speichern der Dateinamen werden auf dem USB-Gerät Informationen gespeichert: freie Blöcke und Anbieter. Also wenn ich mehr Kontrollschlüssel frei habe Blöcke. Wenn sich der Vergleich ändern sollte, muss die Datenbank neu erstellt werden. Wenn ich also Dateien zum USB-Stick entferne oder hinzufüge, wird die Datenbank von Grund auf neu aufgebaut. Aber wenn ich eine Datei umbenenne, passiert nichts. Sie können die Änderungen herausfinden, ohne jede Datei in der Datenbank überprüfen zu müssen?USB-Inhalt prüfen

Wie kann ich den gesamten Inhalt eines USB-Geräts besser kontrollieren? Etwas Hilfe!

Danke!

Ps. .: Ich verwendete ioctl für Anbieter Name und freie Blöcke!

Antwort

0

Sie könnten einen Hash-Wert aus der Ordner-Dateiliste erstellen und diesen in Ihrer DB speichern.

Jedes Mal, wenn der USB-Stick eingesteckt wird, die Hash-Berechnung der Ordnerliste durchführen und mit dem gespeicherten Wert vergleichen. Wenn sie unterschiedlich sind, können Sie davon ausgehen, dass Dateien entfernt, hinzugefügt oder umbenannt wurden und eine Aktualisierung Ihrer Datenbank durchgeführt wurde.

0

Wenn Sie das Betriebssystem und den USB-Stick steuern, können Sie NTFS verwenden. Es verfügt über eine Änderungsprotokollfunktion. Dies enthält eine Update Sequence Number (USN). Jede Änderung des Schlüssels ändert die USN. Sie müssen also nur den alten Wert in Ihrer Datenbank speichern. Wenn Sie einen neuen Wert sehen, lesen Sie das gesamte Dateisystem erneut und aktualisieren Sie die USN in Ihrer Datenbank.