Поделиться через


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 Указанная длина входного буфера меньше размера (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