问:如何有效地仅检测 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中文网其他相关文章!