問:如何有效地僅偵測NTFS 磁碟區上已移除、變更和建立的檔案?
答:您可以使用FSCTL_ENUM_USN_DATA 函數列舉磁碟區上的所有檔案。此函數提供包含文件標誌和 USN 的文件記錄列表,使您可以快速識別變更。
實作細節:
提供的程式碼範例使用 FSCTL_ENUM_USN_DATA 擷取檔案記錄,過濾變更並顯示相關資訊。
<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>
附加說明:
以上是如何使用 FSCTL_ENUM_USN_DATA 高效檢測 NTFS 磁碟區上的檔案變更?的詳細內容。更多資訊請關注PHP中文網其他相關文章!