Heim > Backend-Entwicklung > C++ > Hauptteil

Wie kann man Dateiänderungen auf NTFS-Volumes mit FSCTL_ENUM_USN_DATA effizient erkennen?

DDD
Freigeben: 2024-11-04 10:07:30
Original
184 Leute haben es durchsucht

How to Efficiently Detect File Changes on NTFS Volumes with FSCTL_ENUM_USN_DATA?

Erkennen von Dateiänderungen auf NTFS-Volumes

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>
Nach dem Login kopieren

Zusätzliche Hinweise:

  • FSCTL_ENUM_USN_DATA ist eine schnelle Methode, die nur Informationen zu vorhandenen Dateien zurückgibt.
  • Um vollständige Dateipfade zu erhalten, können Sie übergeordnete IDs mit Datei-IDs von Verzeichnissen abgleichen.
  • Erwägen Sie die Zwischenspeicherung der von zurückgegebenen Daten FSCTL_ENUM_USN_DATA für verbesserte Leistung.
  • FSCTL_ENUM_USN_DATA sollte regelmäßig aufgerufen werden, um seit dem letzten Scan vorgenommene Änderungen zu erfassen.

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!