Q: NTFS ボリューム上で削除、変更、作成されたファイルのみを効率的に検出するにはどうすればよいですか?
A: 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 中国語 Web サイトの他の関連記事を参照してください。