FSCTL_MOVE_FILE IOCTL (winioctl.h)

將檔案的一或多個虛擬叢集從一個邏輯叢集重新放置到相同磁碟區中的另一個。 重組 期間會使用此作業。

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to volume
  FSCTL_MOVE_FILE,              // dwIoControlCode
  (LPVOID) lpInBuffer,          // MOVE_FILE_DATA structure
  (DWORD) nInBufferSize,        // size of input buffer
  NULL,                         // lpOutBuffer
  0,                            // nOutBufferSize
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

備註

FSCTL_MOVE_FILE控制程式代碼會將檔案的一或多個虛擬叢集從一個邏輯叢集重新放置到相同磁碟區內的另一個。 如果要移動的檔案是疏鬆或壓縮檔案,移動的粒度為16個叢集;否則,數據粒度是一個叢集。

若要標示開啟的檔案,使其未重組,請使用在 lpInBuffer 參數中傳遞之 MARK_HANDLE_INFO 結構之 HandleInfo 成員中的 FSCTL_MARK_HANDLE 控件程式代碼,呼叫 DeviceIoControl 函式,並搭配 MARK_HANDLE_PROTECT_CLUSTERS。

請注意, DeviceIoControl 函式與 FSCTL_GET_VOLUME_BITMAP 控件程式代碼所傳回的點代表某個時間點,而且如果磁碟區有寫入活動,就會立即不正確。 因此,可能會嘗試將叢集移至已配置的叢集,但最近的點陣圖表示叢集未配置。 使用 FSCTL_MOVE_FILE 的程序必須備妥,才能達成此可能性。

如需此作業上重疊 I/O 的影響,請參閱 DeviceIoControl 主題的一節。

如需FSCTL_MOVE_FILE控制程式代碼所支援的檔案、數據流和數據流類型清單,請參閱重組檔案主題的一節中支援的檔案、數據流和數據流類型

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

技術 支援
伺服器消息塊 (SMB) 3.0 通訊協定 No
SMB 3.0 透明故障轉移 (TFO) No
具有向外延展檔案共用的SMB 3.0 (SO) No
叢集共用磁碟區文件系統 (CsvFS) Yes

規格需求

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

另請參閱