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 |