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


FSCTL_QUERY_ALLOCATED_RANGES IOCTL (ntifs.h)

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

Основной код

FSCTL_QUERY_ALLOCATED_RANGES

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

Указатель на структуру FILE_ALLOCATED_RANGE_BUFFER, указывающую диапазон для запроса на выделение.

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

Размер структуры FILE_ALLOCATED_RANGE_BUFFER, на которую InputBuffer указывает в байтах.

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

Указатель на массив нулевых или более FILE_ALLOCATED_RANGE_BUFFER элементов данных, в которых возвращаются результаты запроса. Дополнительные сведения см. ниже.

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

Размер буфера, на который OutputBuffer указывает в байтах.

Буфер входных и выходных данных

n/a

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

n/a

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

Зарезервировано для использования системы.

Замечания

Чтобы выполнить эту операцию, вызовите FltFsControlFile или ZwFsControlFile со следующими параметрами.

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

FSCTL_QUERY_ALLOCATED_RANGES возвращает массив из нуля или более FILE_ALLOCATED_RANGE_BUFFER элементов данных в буфере, на который OutputBuffer указывает. Количество возвращаемых элементов FILE_ALLOCATED_RANGE_BUFFER вычисляется путем деления значения, возвращаемого в LengthReturned на sizeof(FILE_ALLOCATED_RANGE_BUFFER). Возвращаемые диапазоны должны пересекаться с диапазоном, указанным в InputBuffer. Ноль FILE_ALLOCATED_RANGE_BUFFER элементы данных возвращаются, если файл не имеет выделенных диапазонов.

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

FSCTL_QUERY_ALLOCATED_RANGES возвращает STATUS_SUCCESS после успешного завершения; в противном случае возвращается код ошибки. Ниже приведены распространенные коды ошибок.

Код ошибки Значение
STATUS_INVALID_PARAMETER Недопустимый параметр. Например: дескриптор не является файлом; Размер InputBuffer меньше размера структуры FILE_ALLOCATED_RANGE_BUFFER; FileOffset меньше нуля; длина меньше нуля; или FileOffset плюс длина больше 0x7FFFFFFFFFFFFFFF.
STATUS_INVALID_USER_BUFFER Входной буфер или выходной буфер не совпадает с границой 4-байтов.
STATUS_BUFFER_TOO_SMALL Буфер вывода слишком мал, чтобы содержать структуру FILE_ALLOCATED_RANGE_BUFFER.
STATUS_BUFFER_OVERFLOW Буфер вывода слишком мал, чтобы содержать требуемое количество структур FILE_ALLOCATED_RANGE_BUFFER.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000
заголовка ntifs.h

См. также

FILE_ALLOCATED_RANGE_BUFFER

FltFsControlFile

ZwFsControlFile