FSCTL_SET_ZERO_DATA IOCTL (winioctl.h)
Mengisi rentang file tertentu dengan nol (0). Jika file jarang atau terkompresi, sistem file NTFS dapat membatalkan alokasi ruang disk dalam file. Ini mengatur rentang byte ke nol (0) tanpa memperpanjang ukuran file.
Untuk melakukan operasi ini, panggil fungsi DeviceIoControl dengan parameter berikut.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to a file
FSCTL_SET_ZERO_DATA, // 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
);
Keterangan
Untuk implikasi I/O yang tumpang tindih pada operasi ini, lihat bagian Keterangan dari topik DeviceIoControl .
Jika Anda menggunakan fungsi WriteFile untuk menulis nol (0) ke file jarang, sistem file mengalokasikan ruang disk untuk data yang Anda tulis. Jika Anda menggunakan kode kontrol FSCTL_SET_ZERO_DATA untuk menulis nol (0) ke file jarang dan wilayah nol (0) cukup besar, sistem file mungkin tidak mengalokasikan ruang disk.
Jika Anda menggunakan kode kontrol FSCTL_SET_ZERO_DATA untuk menulis nol (0) ke file yang tidak jarang, nol (0) ditulis ke file. Sistem mengalokasikan penyimpanan disk untuk semua rentang nol (0), yang setara dengan menggunakan fungsi WriteFile untuk menulis nol (0) ke file.
Stempel waktu mungkin tidak diperbarui dengan benar untuk file jarak jauh. Untuk memastikan hasil yang konsisten, gunakan I/O yang tidak dibuffer.
Di Windows 8 dan Windows Server 2012, kode ini didukung oleh teknologi berikut.
Teknologi | Didukung |
---|---|
Protokol Server Message Block (SMB) 3.0 | Ya |
SMB 3.0 Transparent Failover (TFO) | Ya |
SMB 3.0 dengan Berbagi File Peluasan Skala (SO) | Ya |
Sistem File Volume Bersama Kluster (CsvFS) | Ya |
Sistem File Tangguh (ReFS) | Ya |
Persyaratan
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) |