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_MANAGEMENTMARK_HANDLE_PROTECT_CLUSTERS

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
標頭 winioctl.h (包含 Windows.h)

另請參閱