FSCTL_REARRANGE_FILE IOCTL (ntifs.h)
FSCTL_REARRANGE_FILE переупорядочить распределение в файле, перемещая кластеры из запрошенного непрерывного исходного диапазона в файле в другое расположение в том же файле.
Основной код
Входной буфер
Указатель на структуру 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 |