Heim >Backend-Entwicklung >C++ >Wie kann man Dateiänderungen auf NTFS-Volumes mit FSCTL_ENUM_USN_DATA effizient erkennen?
F: Wie kann ich effizient nur die gelöschten, geänderten und erstellten Dateien auf einem NTFS-Volume erkennen? ?
A: Sie können die Funktion FSCTL_ENUM_USN_DATA verwenden, um alle Dateien auf einem Volume aufzulisten. Diese Funktion stellt eine Liste von Dateidatensätzen bereit, die die Flags und USNs der Datei enthält, sodass Sie Änderungen schnell identifizieren können.
Implementierungsdetails:
Das bereitgestellte Codebeispiel verwendet FSCTL_ENUM_USN_DATA zum Abrufen der Dateidatensätze, zum Filtern nach Änderungen und zum Anzeigen relevanter Informationen.
<code class="c++">#include <Windows.h> #include <stdio.h> // ... void check_record(USN_RECORD *record) { // Check for specific file name or criteria // ... show_record(record); } int main(int argc, char ** argv) { // Initialize variables // ... for (;;) { // Call FSCTL_ENUM_USN_DATA to get file records // ... record = (USN_RECORD *)((USN *)buffer + 1); recordend = (USN_RECORD *)(((BYTE *)buffer) + bytecount); while (record < recordend) { filecount++; check_record(record); record = (USN_RECORD *)(((BYTE *)record) + record->RecordLength); } mft_enum_data.StartFileReferenceNumber = nextid; } // ... }</code>
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie kann man Dateiänderungen auf NTFS-Volumes mit FSCTL_ENUM_USN_DATA effizient erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!