FSCTL_MARK_HANDLE IOCTL (winioctl.h)
使用該檔案或目錄變更的相關信息,標記指定的檔案或目錄及其變更日誌記錄。
若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函式。
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to file or directory
FSCTL_MARK_HANDLE, // dwIoControlCode
(LPVOID)lpInBuffer, // input buffer
(DWORD)nInBufferSize, // size of input buffer
NULL, // lpOutBuffer
0, // nOutBufferSize
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
備註
如需此作業上重疊 I/O 的影響,請參閱 DeviceIoControl 主題的一節。
FSCTL_MARK_HANDLE 是在個別檔案或目錄上操作的唯一變更日誌作業。 它不會影響用戶可對項目執行的任何動作。 相反地,它會將資訊新增至檔案或目錄,提供操作系統如何變更專案或將私人數據流新增至項目的資訊。
如果檔案或目錄有任何變更,則以 FSCTL_MARK_HANDLE 新增的資訊也會複製到針對檔案或目錄建立的 USN 記錄中。 請注意,這兩個作業可以彼此獨立發生,例如,USN 記錄不需要存在,才能將檔案標示為無法重組,而且不需要標記檔案或目錄來更新對應 USN 記錄的內容。 如需 FSCTL_MARK_HANDLE 可以標示 (項目的詳細資訊,請參閱 MARK_HANDLE_INFO 以取得詳細資訊) 。
刪除磁碟區變更日誌或非使用中時,使用 FSCTL_MARK_HANDLE 不是錯誤。 不論變更日誌的狀態為何,適當的信息都會套用至檔案或目錄,只要變更日誌存在。
請注意,遠端檔案可能無法正確更新時間戳。 若要確保結果一致,請使用未緩衝的 I/O。
磁碟區必須是NTFS。
在 Windows 8 和 Windows Server 2012 中,下列技術支援此程序代碼。
技術 | 支援 |
---|---|
伺服器消息塊 (SMB) 3.0 通訊協定 | No |
SMB 3.0 透明故障轉移 (TFO) | No |
具有向外延展檔案共用的SMB 3.0 (SO) | No |
叢集共用磁碟區文件系統 (CsvFS) | Yes |
CSV 一律會針對符合直接 IO 資格的檔案發出 USN_SOURCE_REPLICATION_MANAGEMENT 和 MARK_HANDLE_PROTECT_CLUSTERS 。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
標頭 | winioctl.h (包含 Windows.h) |