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) |