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


код элемента управления FSCTL_QUERY_FILE_LAYOUT

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

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

Параметры

  • FileObject [in]: только FltFsControlFile . Указатель файлового объекта для тома файловой системы. Этот параметр является обязательным и не может иметь значение NULL.

  • FileHandle [in]: только ZwFsControlFile . Дескриптор файла для тома файловой системы. Этот параметр является обязательным и не может иметь значение NULL.

  • FsControlCode [in]: код элемента управления для операции. Используйте код элемента управления FSCTL_QUERY_FILE_LAYOUT для этой операции.

  • InputBuffer [in]: указатель на структуру, выделенную вызывающим объектом QUERY_FILE_LAYOUT_INPUT . Эта структура содержит параметры выбора. Необязательные экстенты файлов включаются после QUERY_FILE_LAYOUT_INPUT.

  • InputBufferLength [in]: размер (в байтах) буфера, на который указывает параметр InputBuffer . Размер InputBuffer должен быть не ниже sizeof(QUERY_FILE_LAYOUT_INPUT) + (sizeof(Filter) * (NumberOfPairs - 1)), если NumberOfPairs> 0. В противном случае задайте inputBufferLength = sizeof(QUERY_FILE_LAYOUT_INPUT).

  • OutputBuffer [out]: указатель на структуру, выделенную вызывающим объектом QUERY_FILE_LAYOUT_OUTPUT . Это заголовок для записей макета файла, которые следуют в этом буфере.

  • OutputBufferLength [out]: размер в байтах буфера, на который указывает параметр OutputBuffer . Размер OutputBuffer должен быть достаточно большим, чтобы он содержал QUERY_FILE_LAYOUT_OUTPUT вместе с возвращаемыми структурами макета файла и потока.

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

FltFsControlFile или ZwFsControlFile возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Код Значение
STATUS_INVALID_PARAMETER Том файловой системы не является открытым томом пользователя, неправильно задано значение длины буфера или задан недопустимый параметр запроса.
STATUS_ACCESS_DENIED Вызывающий объект не может получить доступ к тому файловой системы.
STATUS_INVALID_USER_BUFFER Указатель для InputBuffer или OutputBuffer не выровнен должным образом.
STATUS_BUFFER_TOO_SMALL Значение в OutputBufferLength указывает, что outputBuffer слишком мал, чтобы содержать хотя бы одну запись макета.
STATUS_END_OF_FILE Указатель для InputBuffer или OutputBuffer не выровнен должным образом.

Комментарии

Чтобы получить все записи макета для тома, запрос FSCTL_QUERY_FILE_LAYOUT отправляется несколько раз, пока не будет возвращен STATUS_END_OF_FILE . Пока возвращается STATUS_SUCCESS , вызывающий объект может продолжать отправлять запрос FSCTL_QUERY_FILE_LAYOUT для остальных записей макета.

Перечисление записей макета можно перезапустить в любое время, включив флаг QUERY_FILE_LAYOUT_RESTART в элемент FlagsQUERY_FILE_LAYOUT_INPUT. Кроме того, после того как FSCTL_QUERY_FILE_LAYOUT возвратит STATUS_END_OF_FILE, необходимо включить флаг QUERY_FILE_LAYOUT_RESTART в следующий запрос FSCTL_QUERY_FILE_LAYOUT, чтобы начать перечисление другой записи макета.

Этот код не поддерживается ReFS.

Требования

Тип требования Требование
Минимальная версия клиента Windows 8.1 с обновлением
Заголовок Ntifs.h (включая Ntifs.h или Fltkernel.h)

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

QUERY_FILE_LAYOUT_INPUT

QUERY_FILE_LAYOUT_OUTPUT

FltFsControlFile

ZwFsControlFile