FSCTL_SET_OBJECT_ID_EXTENDED IOCTL (winioctl.h)

修改與指定檔案或目錄之物件識別碼相關聯的使用者資料。

若要執行這項作業,請使用下列參數呼叫 DeviceIoControl 函 式。

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to device
  FSCTL_SET_OBJECT_ID_EXTENDED,     // 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
);

備註

物件識別碼可用來追蹤檔案和目錄。 大部分的應用程式都看不見它們,而且不應該由應用程式修改。 修改物件識別碼可能會導致檔案部分的資料遺失,最多包含整個資料量。

此作業只會在物件識別碼中設定使用者資料。 可能的用途是儲存時間戳記,以建立物件識別碼或單調增加的版本號碼。 忽略FILE_OBJECTID_BUFFER結構的ObjectId成員。 沒有修改 ObjectId 成員的機制。 FSCTL_SET_OBJECT_ID_EXTENDED 控制項程式 代碼的一般用法是當系統建立物件識別碼時,應用程式不會使用 NTFS 檔案系統所產生的使用者資料。

若要在還沒有物件的物件上設定物件識別碼,請使用 FSCTL_SET_OBJECT_ID 控制項程式碼。 若要讓 NTFS 檔案系統在不存在時產生物件識別碼,請使用 FSCTL_CREATE_OR_GET_OBJECT_ID 控制項程式碼。

請注意,遠端檔案的時間戳記可能無法正確更新。 若要確保結果一致,請使用未緩衝的 I/O。

在 Windows 8 和 Windows Server 2012 中,下列技術支援此程式碼。

技術 支援
伺服器訊息區 (SMB) 3.0 通訊協定 Yes
SMB 3.0 透明容錯移轉 (TFO)
具有向外延展檔案共用的 SMB 3.0 (SO) Yes
叢集共用磁片區檔案系統 (CsvFS)
彈性檔案系統 (ReFS)

規格需求

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

另請參閱