使用變更日誌識別碼

NTFS 檔案系統會將未簽署的 64 位識別碼與每個變更日誌產生關聯。 日誌會在建立時加上此識別碼的戳記。 檔案系統會以新的識別碼戳記日誌,其中現有的更新序號 (USN) 記錄為 或 無法使用。

例如,當磁片區從一個 NTFS 版本移至另一個版本,然後返回時,NTFS 檔案系統會重新取樣具有新識別碼的變更日誌。 這類移動可能會發生在雙開機環境中,或在使用卸載式媒體時發生。

若要取得指定磁片區上目前變更日誌的識別碼,請使用 FSCTL_QUERY_USN_JOURNAL 控制程式代碼。 若要執行此作業和所有其他變更日誌作業,您必須具有系統管理員許可權。 也就是說,您必須是 Administrators 群組的成員。

當系統管理員刪除並重新建立變更日誌時,例如,當目前的 USN 值接近可能的最大 USN 值時,USN 值會從零開始。 當 NTFS 檔案系統戳記具有新識別碼的日誌,而不是重新建立日誌時,它不會將 USN 重設為零,而是會從目前的 USN 繼續。 不論是哪一種情況,所有現有的 USN 都小於任何未來的 USN。

當您需要特定記錄集的資訊時,請使用 FSCTL_QUERY_USN_JOURNAL 控制程式代碼來取得變更日誌識別碼。 然後使用 FSCTL_READ_USN_JOURNAL 控制項程式碼來讀取感興趣的日誌記錄。 NTFS 檔案系統只會傳回識別碼所指定日誌有效的記錄。

您的應用程式需要記錄的 USN 和識別碼來讀取日誌。 此需求會針對您的應用程式應該忽略檔案中的現有記錄,以及記錄在相同磁片區的先前日誌實例中寫入的位置,提供完整性檢查。

若要取得您感興趣的記錄,您必須從最舊的記錄 (開始,也就是最低 USN) 並向前掃描,直到您找到第一筆感興趣的記錄為止。