FSCTL_SET_ZERO_DATA IOCTL (winioctl.h)
Заполняет указанный диапазон файла нулями (0). Если файл разрежен или сжатый, файловая система NTFS может освободить место на диске в файле. При этом диапазон байтов задается равным нулю (0), не расширяя размер файла.
Для выполнения этой операции вызовите функцию DeviceIoControl со следующими параметрами.
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
);
Комментарии
Сведения о последствиях перекрывающихся операций ввода-вывода для этой операции см. в разделе Примечания статьи DeviceIoControl .
Если вы используете функцию WriteFile для записи нулей (0) в разреженный файл, файловая система выделяет место на диске для записываемых данных. Если вы используете управляющий код FSCTL_SET_ZERO_DATA для записи нулей (0) в разреженный файл и область нуля (0) достаточно велика, файловая система может не выделить место на диске.
Если вы используете управляющий код FSCTL_SET_ZERO_DATA для записи нулей (0) в неразреженный файл, в файл записываются нули (0). Система выделяет дисковое хранилище для всего нулевого диапазона (0), что эквивалентно использованию функции WriteFile для записи нулей (0) в файл.
Метки времени могут быть неправильно обновлены для удаленного файла. Чтобы обеспечить согласованность результатов, используйте небуферизованный ввод-вывод.
В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
SMB 3.0 Transparent Failover (TFO) | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Да |
Требования
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | winioctl.h (включая Windows.h) |