Bagikan melalui


FSCTL_SHRINK_VOLUME IOCTL (winioctl.h)

Sinyal bahwa volume akan disiapkan untuk melakukan operasi penyusutan, operasi penyusutan akan dilakukan, atau operasi penyusutan akan dihentikan.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,             // handle to device
  FSCTL_SHRINK_VOLUME,          // dwIoControlCode
  (LPVOID) lpInBuffer,          // input buffer
  nInBufferSize,                // size of input buffer    
  NULL,                         // output buffer
  O,                            // size of output buffer
  (LPDWORD) lpBytesReturned,    // number of bytes returned
  (LPOVERLAPPED) lpOverlapped   // OVERLAPPED structure
);

Keterangan

Kode kontrol ini hanya didukung pada sistem file NTFS dan RAW.

Untuk menyelesaikan operasi penyusutan, Anda harus:

  1. Panggil CreateFile untuk membuka handel ke volume.
  2. Hubungi FSCTL_SHRINK_VOLUME. Atur anggota ShrinkRequestType dari struktur SHRINK_VOLUME_INFORMATION ke ShrinkPrepare. Atur anggota NewNumberOfSectors dari struktur yang sama ke nol. Jika panggilan ini berhasil, sistem file tidak akan mengalokasikan kluster di luar akhir panjang volume baru.
  3. Panggil FSCTL_MOVE_FILE pada semua file di luar jumlah sektor baru dan pindahkan dalam rentang yang valid. Anda bertanggung jawab untuk memindahkan file apa pun yang terpengaruh oleh operasi penyusutan.
  4. Hubungi FSCTL_SHRINK_VOLUME. Atur anggota ShrinkRequestType dari struktur SHRINK_VOLUME_INFORMATION ke ShrinkCommit. Atur anggota NewNumberOfSectors dari struktur yang sama ke nol. Jika semua file di luar akhir ukuran volume baru belum dipindahkan, panggilan gagal dengan STATUS_ALREADY_COMMITTED (ERROR_ACCESS_DENIED). Jika tidak, sistem file sekarang telah menyusut.
  5. Hubungi IOCTL_DISK_GROW_PARTITION. Atur anggota BytesToGrow dari struktur DISK_GROW_PARTITION ke angka negatif yang menunjukkan jumlah byte yang akan dihapus.

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) Lihat komentar

Hanya didukung pada simpul yang memiliki NTFS yang dipasang.

Persyaratan

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

Lihat juga