FSCTL_REARRANGE_FILE IOCTL (ntifs.h)

FSCTL_REARRANGE_FILE переупорядочить распределение в файле, перемещая кластеры из запрошенного непрерывного исходного диапазона в файле в другое расположение в том же файле.

Основной код

IRP_MJ_DEVICE_CONTROL

Входной буфер

Указатель на структуру REARRANGE_FILE_DATA , описывающую распределение, которое необходимо переупорядочить. (Для 32-разрядных вызывающих элементов входной буфер является указателем на структуру REARRANGE_FILE_DATA32 .)

Длина входного буфера

Размер входного буфера в байтах.

Выходной буфер

Ни один; для параметра задано значение NULL.

Длина выходного буфера

Задайте нулевое значение.

Блок состояния

Возвращаемые значения

FSCTL_REARRANGE_FILE возвращает STATUS_SUCCESS после успешного завершения; В противном случае возвращается код NTSTATUS, например один из следующих.

Код возврата Значение
STATUS_ACCESS_DENIED Разрешены только вызовы в режиме ядра.
STATUS_BUFFER_TOO_SMALL Указанная длина входного буфера меньше размера sizeof(REARRANGE_FILE_DATA).
STATUS_PENDING Выполнение операции ожидается.

Комментарии

Параметры запроса содержат смещения байтов исходного и целевого файлов, а также длину в байтах перемещаемой исходной области, причем все они должны быть выровнены по кластеру.

  • При перемещении кластеров вниз смещение целевого файла указывает точку, в которой должна быть выровнена нижняя граница диапазона перемещаемого источника.
  • При перемещении кластеров вверх смещение целевого файла указывает точку, в которой должна быть выровнена верхняя граница исходного диапазона.

В обоих случаях целевое смещение указывает, что исходный диапазон должен быть вставлен перед кластером, который начинается с целевого смещения, при этом различие принудительно определяется ограничением на то, что размер выделения остается фиксированным.

В отличие от FSCTL_SHUFFLE_FILE, FSCTL_REARRANGE_FILE не позволяет добавлять выделения, содержащие случайные данные.

Для выполнения этой операции вызовите FltFsControlFile или ZwFsControlFile со следующими параметрами.

Параметр Описание
Экземпляр [in] Только для FltFsControlFile . Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.
FileObject [in] Только для FltFsControlFile . Указатель файлового объекта для файла или каталога, которые являются целевым объектом этого запроса. Этот параметр является обязательным и не может иметь значение NULL.
FileHandle [in] Только для ZwFsControlFile . Дескриптор файла или каталога, который является целевым объектом этого запроса. Этот параметр является обязательным и не может иметь значение NULL.
IoStatusBlock [out] Только для ZwFsControlFile . Указатель на структуру IO_STATUS_BLOCK , которая содержит окончательное состояние запроса.
FsControlCode [in] Задайте значение FSCTL_REARRANGE_FILE.
InputBuffer [in] См. раздел Параметры IOCTL.
InputBufferLength [in] См. раздел Параметры IOCTL.

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1809
Верхняя часть ntifs.h

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

FltFsControlFile

FSCTL_SHUFFLE_FILE

REARRANGE_FILE_DATA

ZwFsControlFile