USN_RECORD_V4結構 (winioctl.h)
包含更新序號的資訊, (USN) 變更日誌 4.0 版記錄。 2.0 和 3.0 版記錄是由 USN_RECORD_V2 (分別定義 USN_RECORD) 和 USN_RECORD_V3 結構。
語法
typedef struct {
USN_RECORD_COMMON_HEADER Header;
FILE_ID_128 FileReferenceNumber;
FILE_ID_128 ParentFileReferenceNumber;
USN Usn;
DWORD Reason;
DWORD SourceInfo;
DWORD RemainingExtents;
WORD NumberOfExtents;
WORD ExtentSize;
USN_RECORD_EXTENT Extents[1];
} USN_RECORD_V4, *PUSN_RECORD_V4;
成員
Header
描述記錄長度、主要版本和記錄次要版本的 USN_RECORD_COMMON_HEADER 結構。
FileReferenceNumber
此記錄所記下之檔案或目錄的128位序號。
這個值是任意指派的值,可將日誌記錄與檔案產生關聯。
ParentFileReferenceNumber
與這個記錄相關聯的檔案或目錄所在目錄的128位序號。
這個值是任意指派的值,可將日誌記錄與父目錄產生關聯。
Usn
此記錄的 USN。
Reason
旗標,可識別自檔案或目錄開啟后累積在此檔案或目錄日誌記錄中變更的原因。
當檔案或目錄關閉時,會產生最後一筆 USN 記錄,並設定 USN_REASON_CLOSE 旗標。 例如,下一個變更 (,在下一個開啟作業或刪除之後,) 以一組新的原因旗標啟動新的記錄。
重新命名或移動作業會產生兩筆 USN 記錄,一筆記錄專案的舊父目錄,另一筆記錄新的父系。
下表識別可能的旗標。
SourceInfo
DeviceIoControl 作業FSCTL_MARK_HANDLE所設定之變更來源的其他資訊。
當線程寫入新的 USN 記錄時,只有在線程也設定這些旗標時,才會繼續存在先前記錄中的來源資訊旗標。 因此,來源信息結構可讓應用程式篩選掉只由已知來源設定的USN記錄,例如防毒篩選器。
您可以設定下列其中一個值。
RemainingExtents
目前 USN_RECORD_V4 記錄之後所保留的範圍數目。 可能需要多個 4.0 版記錄,才能描述指定檔案的所有修改範圍。 當 RemainingExtents 成員是 0 時,目前的USN_RECORD_V4記錄是檔案的最後一筆USN_RECORD_V4記錄。 指定檔案的最後 一個USN_RECORD_V4 專案一律會接著至少設定 USN_REASON_CLOSE 旗 標的USN_RECORD_V3 記錄。
NumberOfExtents
目前 USN_RECORD_V4 專案中的範圍數目。
ExtentSize
Extents 成員中每個USN_RECORD_EXTENT結構的大小,以位元組為單位。
Extents[1]
USN_RECORD_EXTENT 結構的陣列 ,表示 USN_RECORD_V4 專案中的範圍。
備註
只有在開啟範圍追蹤且檔案大小等於或大於 RangeTrackFileSizeThreshold 成員的值時,才會輸出USN_RECORD_V4記錄。 使用者一律會收到一或多個 USN_RECORD_V4 記錄,後面接著一筆 USN_RECORD_V3 記錄。
為了在變更日誌用戶端中提供路徑轉寄相容性,Microsoft 會在 USN_RECORD_V4 結構中提供變更日誌軟體的主要和次要版本號碼。 您的程式代碼應該檢查這些值、檢查其本身與變更日誌軟體的相容性,並視需要適當地處理任何不相容。
次要版本號碼的變更表示現有的 USN_RECORD_V4 結構成員仍然有效,但新成員可能已新增到第二個成員與最後一個,這是可變長度字串。
若要正常處理這類變更,您的程式代碼不應該執行任何依賴最後一個成員位置的編譯時間指標算術。 例如,次要版本號碼中的變更會使 sizeof(USN_RECORD)
呼叫不可靠。 而是依賴使用 RecordLength 成員的 運行時間計算。
變更日誌軟體的主要版本號碼增加表示 USN_RECORD_V4 結構可能已經進行重大變更,而且目前的定義可能不可靠。 如果您的程式代碼偵測到變更日誌軟體的主要版本號碼變更,程式代碼就不應該與變更日誌搭配使用。
如需詳細資訊,請參閱建立、修改和刪除變更 日誌。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8.1 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2012 R2 [僅限傳統型應用程式] |
標頭 | winioctl.h (包含 Windows.h) |