Maison >développement back-end >C++ >Comment détecter efficacement les modifications de fichiers sur les volumes NTFS avec FSCTL_ENUM_USN_DATA ?
Q : Comment puis-je détecter efficacement uniquement les fichiers supprimés, modifiés et créés sur un volume NTFS ?
A : Vous pouvez utiliser la fonction FSCTL_ENUM_USN_DATA pour énumérer tous les fichiers sur un volume. Cette fonction fournit une liste d'enregistrements de fichiers qui inclut les indicateurs et les USN du fichier, vous permettant d'identifier rapidement les modifications.
Détails de mise en œuvre :
L'exemple de code fourni utilise FSCTL_ENUM_USN_DATA pour récupérer les enregistrements du fichier, filtrer les modifications et afficher les informations pertinentes.
<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>
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!