共用方式為


MOVE_FILE_DATA結構 (winioctl.h)

包含 FSCTL_MOVE_FILE 控件程式代碼的輸入數據。

語法

typedef struct {
  HANDLE        FileHandle;
  LARGE_INTEGER StartingVcn;
  LARGE_INTEGER StartingLcn;
  DWORD         ClusterCount;
} MOVE_FILE_DATA, *PMOVE_FILE_DATA;

成員

FileHandle

要移動之檔案的句柄。

若要擷取檔案的句柄,請使用 CreateFile

如果檔案已加密,句柄必須具有 FILE_READ_DATAFILE_WRITE_DATAFILE_APPEND_DATAFILE_EXECUTE 訪問許可權。 如需詳細資訊,請參閱 檔案安全性和訪問許可權

StartingVcn

相對於要移動之第一個叢集的檔案開頭) ,VCN (叢集編號。

StartingLcn

要移動 VCN 的磁碟區) 上的 LCN (叢集編號。

ClusterCount

要移動的叢集計數。

備註

若要擷取要填入此結構的數據,請使用 DeviceIoControl 函式搭配 FSCTL_GET_RETRIEVAL_POINTERS 控件程序代碼。

無法移動 FAT 檔案系統磁碟區上目錄的第一個叢集。

可能的話,在 16 (KB) 遞增中,以 16 KB 為單位,以彼此相對對齊的區塊移動數據。 這會在啟用陰影複製時減少寫入時的額外負荷,因為陰影複製空間會增加,而且發生下列情況時會降低效能:

  • 移動要求區塊大小小於或等於 16 KB。
  • 移動差異不會遞增 16 KB。
移動差異是來源區塊開頭與目標區塊開頭之間的位元元組數目。 換句話說,如果 X 減 Y 的絕對值為 16 KB 的絕對值,則從位移 X 開始的區塊 (磁碟上) 可以移至起始位移 Y。 因此,假設有 4 KB 的叢集,從叢集 3 移至叢集 27 將會優化,但從叢集 18 移至叢集 24 將不會。 請注意,mod (3,4) = 3 = mod (27,4) 。 選擇Mod 4,因為每個叢集4 KB的四個叢集相當於16 KB。 因此,格式化為 16 KB 叢集大小的磁碟區會導致所有行動檔案都優化。

如需陰影複製的詳細資訊,請參閱 磁碟區陰影複製服務

規格需求

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

另請參閱

重組檔案

FSCTL_GET_RETRIEVAL_POINTERS

FSCTL_MOVE_FILE

GetFileAttributes

GetFileAttributesEx

GetFileInformationByHandle