FSCTL_FILE_LEVEL_TRIM IOCTL (winioctl.h)
Указывает диапазоны в указанном файле, которые не нужно хранить в системе хранения.
Для выполнения этой операции вызовите функцию DeviceIoControl со следующими параметрами.
BOOL DeviceIoControl(
(HANDLE) hDevice, // Handle to a file
FSCTL_FILE_LEVEL_TRIM, // dwIoControlCode
(LPVOID) lpInBuffer, // Input buffer
(DWORD) nInBufferSize, // Size of input buffer
(LPVOID) lpOutBuffer, // Output buffer
(DWORD) nOutBufferSize, // Size of output buffer
(LPDWORD) lpBytesReturned, // Number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Комментарии
Код элемента управления FSCTL_FILE_LEVEL_TRIM является подсказкой для базовой системы хранения. При обрезке диапазона байтов, если этот диапазон будет позже считывается снова, возвращаемые данные могут быть исходными данными до операции обрезки — все нули (0x00 байты), все (0xff байты) или их комбинация. Перед передачей операции обрезки в базовую систему хранения диапазоны входных данных сокращаются в соответствии с границами страницы (4096 байт в 32-разрядных и 64-разрядных выпусках Windows, 8192 байта в Itanium-Based выпусках Windows).
Если при обработке FILE_LEVEL_TRIM_RANGE записей, следующих за структурой FILE_LEVEL_TRIM во входном буфере, на который указывает параметр lpInBuffer , то остановка обработки и элемент NumRangesProcessed структуры FILE_LEVEL_TRIM_OUTPUT , на которую указывает параметр lpOutBuffer , будет указывать диапазоны, которые были успешно обработаны. Диапазоны между NumRangesProcessed и элементом NumRangesструктуры FILE_LEVEL_TRIM не были обработаны.
Код элемента управления FSCTL_FILE_LEVEL_TRIM несовместим с зашифрованными или сжатыми файлами (GetFileAttributes возвращает FILE_ATTRIBUTE_ENCRYPTED или FILE_ATTRIBUTE_COMPRESSED) и завершается сбоем при ERROR_INVALID_PARAMETER. Поддерживаются разреженные файлы (обозначаемые FILE_ATTRIBUTE_SPARSE_FILE), но можно обрезать только выделенные диапазоны. Файлы на томах, зашифрованных с помощью технологии BitLocker, поддерживаются, а отдельные зашифрованные файлы — нет.
Код элемента управления FSCTL_FILE_LEVEL_TRIM не участвует в транзакциях. Если код элемента управления FSCTL_FILE_LEVEL_TRIM обрабатывается во время транзакции и транзакция прервана, откат обрезки с транзакцией не выполняется.
Диапазоны, которые успешно обрезаны, будут удалены из кэша файловой системы.
Диапазоны, которые обрезаются, могут превышать допустимую длину данных (VDL) до конца файла (EOF).
В Windows 8 и Windows Server 2012 этот код поддерживается следующими технологиями.
Технология | Поддерживается |
---|---|
Протокол SMB 3.0 | Да |
Прозрачная отработка отказа (TFO) SMB 3.0 | Да |
SMB 3.0 с масштабируемыми общими папками (SO) | Да |
Файловая система общего тома кластера (CSVFS) | Да |
Восстанавливаемая файловая система (ReFS) | Нет |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 [только классические приложения] |
Минимальная версия сервера | Windows Server 2012 [только классические приложения] |
Верхняя часть | winioctl.h (включая Windows.h) |