структура QUERY_FILE_LAYOUT_INPUT (ntifs.h)
Структура QUERY_FILE_LAYOUT_INPUT выбирает, какие записи макета файла возвращаются из запроса FSCTL_QUERY_FILE_LAYOUT .
Синтаксис
typedef struct _QUERY_FILE_LAYOUT_INPUT {
union {
ULONG FilterEntryCount;
ULONG NumberOfPairs;
} DUMMYUNIONNAME;
ULONG Flags;
QUERY_FILE_LAYOUT_FILTER_TYPE FilterType;
ULONG Reserved;
union {
CLUSTER_RANGE ClusterRanges[1];
FILE_REFERENCE_RANGE FileReferenceRanges[1];
STORAGE_RESERVE_ID StorageReserveIds[1];
} Filter;
} QUERY_FILE_LAYOUT_INPUT, *PQUERY_FILE_LAYOUT_INPUT;
Члены
DUMMYUNIONNAME
DUMMYUNIONNAME.FilterEntryCount
Количество записей фильтра в массиве фильтров .
DUMMYUNIONNAME.NumberOfPairs
Исходное имя поля, когда существовал только один тип фильтра. Объединение просто для обеспечения совместимости кода.
Flags
Указывает, какие записи макета файла включены в результаты запроса. Флагам присваивается допустимое сочетание следующих значений.
Значение | Значение |
---|---|
QUERY_FILE_LAYOUT_INCLUDE_EXTENTS | Stream записи экстента включаются в результаты запроса. Чтобы использовать этот флаг, необходимо также задать флаг QUERY_FILE_LAYOUT_INCLUDE_STREAMS . |
QUERY_FILE_LAYOUT_INCLUDE_EXTRA_INFO | В результаты запроса включаются дополнительные записи имен сведений о файле. |
QUERY_FILE_LAYOUT_INCLUDE_NAMES | Записи имен файлов включаются в результаты запроса. |
QUERY_FILE_LAYOUT_INCLUDE_STREAMS | Записи файлового потока включаются в результаты запроса. |
QUERY_FILE_LAYOUT_RESTART | Сброс итератора записи макета файла в начало тома. |
QUERY_FILE_LAYOUT_INCLUDE_STREAMS_WITH_NO_CLUSTERS_ALLOCATED | Включите записи для резидентных потоков и нераспределенных атрибутов. Чтобы использовать этот флаг, необходимо также задать флаг QUERY_FILE_LAYOUT_INCLUDE_STREAMS . |
FilterType
Задает метод фильтрации для ограничения возвращаемых сведений о макете. Может иметь одно из следующих значений.
Значение | Значение |
---|---|
QUERY_FILE_LAYOUT_FILTER_TYPE_NONE | Не выполняйте фильтрацию и возвращайте все сведения. При использовании этого типа параметр NumberOfPairs должен иметь значение 0. |
QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS | Ограничьте сведения о макете фильтра диапазонами в Filter.ClusterRanges. |
QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID | Ограничьте сведения о макете фильтра диапазонами в Filter.FileReferenceRanges. |
Reserved
Зарезервировано для системного использования.
Filter
Массив структур фильтров, используемых для выбора определенных сведений о макете. Они содержат диапазоны ссылок на кластер или файл. Длина массива определяется элементом NumberOfPairs . Каждый диапазон должен быть отдельным и не может перекрываться с любым другим диапазоном.
Этот элемент игнорируется, если QUERY_FILE_LAYOUT_FILTER_TYPE_NONE указан в параметре FilterType.
Filter.ClusterRanges[1]
Задает набор диапазонов кластера для фильтрации сведений о макете. Структура диапазона имеет следующий формат.
typedef struct _CLUSTER_RANGE {
LARGE_INTEGER StartingCluster;
LARGE_INTEGER ClusterCount;
} CLUSTER_RANGE, *PCLUSTER_RANGE;
Filter.FileReferenceRanges[1]
Задает набор диапазонов ссылок на файл для фильтрации сведений о макете. Доступно начиная с Windows 10 версии 1809. Структура диапазона имеет следующий формат.
typedef struct _FILE_REFERENCE_RANGE {
LARGE_INTEGER StartingFileReference;
LARGE_INTEGER EndingReferenceNumber;
} FILE_REFERENCE_RANGE, *PFILE_REFERENCE_RANGE;
Filter.StorageReserveIds[1]
Задает набор идентификаторов резервирования хранилища для фильтрации сведений о макете. Связанное перечисление имеет следующий формат.
typedef enum _STORAGE_RESERVE_ID {
StorageReserveIdNone = 0,
StorageReserveIdHard,
StorageReserveIdSoft,
StorageReserveIdUpdateScratch,
StorageReserveIdMax
} STORAGE_RESERVE_ID, *PSTORAGE_RESERVE_ID;
Комментарии
Флаг QUERY_FILE_LAYOUT_RESTART устанавливается в первом запросе FSCTL_QUERY_FILE_LAYOUT . Если диапазоны фильтров включены в запрос, они кэшируются при установке QUERY_FILE_LAYOUT_RESTART . Дальнейшие запросы будут возвращать записи файла макета до окончания тома или до тех пор, пока не будут исчерпаны диапазоны фильтров.
Если QUERY_FILE_LAYOUT_RESTART снова задан для того же тома, расположение макета файла сбрасывается в начало тома. Кроме того, диапазоны фильтров кэшируются повторно, а порядок их оценки сбрасывается до первого диапазона.
Записи макета файла возвращаются в выходном буфере после QUERY_FILE_LAYOUT_OUTPUT структуры.
Если параметр FilterTypeQUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS, для фильтрации по диапазонам используется элемент ClusterRanges в объединении фильтров . В противном случае, если параметр FilterType имеет значение QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID, для фильтрации по диапазонам используется элемент FileReferenceRanges .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 8 |
Верхняя часть | ntifs.h (включая Ntifs.h) |