структура 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)

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

FSCTL_QUERY_FILE_LAYOUT

QUERY_FILE_LAYOUT_OUTPUT