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)

См. также раздел