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

Filter 数组中的 筛选器 条目数。

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 成员指定。 每个区域都必须是不同的,并且不能与任何其他区域重叠。

如果在 FilterType 中指定了QUERY_FILE_LAYOUT_FILTER_TYPE_NONE,则忽略此成员。

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]

指定一组存储保留 ID 以筛选布局信息。 关联的枚举采用以下格式。

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 结构在输出缓冲区中返回。

QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERSFilterType 时,筛选器联合的 ClusterRanges 成员用于范围筛选。 否则,如果 filterType 为 QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID,则 FileReferenceRanges 成员用于范围筛选。

要求

要求
最低受支持的客户端 Windows 8
标头 ntifs.h (包括 Ntifs.h)

另请参阅

FSCTL_QUERY_FILE_LAYOUT

QUERY_FILE_LAYOUT_OUTPUT