код элемента управления 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) |