Bagikan melalui


FSCTL_MOVE_FILE IOCTL (winioctl.h)

Merelokasi satu atau beberapa kluster virtual file dari satu kluster logis ke kluster logis lainnya dalam volume yang sama. Operasi ini digunakan selama defragmentasi.

Untuk melakukan operasi ini, panggil fungsi DeviceIoControl dengan parameter berikut.

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
);

Keterangan

Kode kontrol FSCTL_MOVE_FILE merelokasi satu atau beberapa kluster virtual file dari satu kluster logis ke kluster logis lainnya dalam volume yang sama. Jika file yang akan dipindahkan adalah file jarang atau terkompresi, granularitas pemindahan adalah 16 kluster; jika tidak, granularitasnya adalah satu kluster.

Untuk menandai file terbuka agar tidak didefragmentasi, panggil fungsi DeviceIoControl dengan kode kontrol FSCTL_MARK_HANDLE dengan MARK_HANDLE_PROTECT_CLUSTERS di anggota HandleInfo dari struktur MARK_HANDLE_INFO yang diteruskan dalam parameter lpInBuffer .

Perhatikan bahwa bitmap yang dikembalikan oleh fungsi DeviceIoControl dengan kode kontrol FSCTL_GET_VOLUME_BITMAP mewakili titik waktu, dan dapat salah segera setelah dibaca jika volume memiliki aktivitas tulis. Dengan demikian, dimungkinkan untuk mencoba memindahkan kluster ke kluster yang dialokasikan meskipun bitmap baru-baru ini menunjukkan bahwa kluster tidak dialokasikan. Program yang menggunakan FSCTL_MOVE_FILE harus disiapkan untuk kemungkinan ini.

Untuk implikasi I/O yang tumpang tindih pada operasi ini, lihat bagian Keterangan dari topik DeviceIoControl .

Untuk daftar file, aliran, dan jenis aliran yang didukung oleh kode kontrol FSCTL_MOVE_FILE , lihat jenis File, aliran, dan aliran yang didukung untuk bagian defragmentasi topik File Defragmentasi .

Di Windows 8 dan Windows Server 2012, kode ini didukung oleh teknologi berikut.

Teknologi Didukung
Protokol Server Message Block (SMB) 3.0 Tidak
SMB 3.0 Transparent Failover (TFO) Tidak
SMB 3.0 dengan Scale-out File Shares (SO) Tidak
Sistem File Volume Bersama Kluster (CsvFS) Ya

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Header winioctl.h (termasuk Windows.h)

Lihat juga