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]
指定要篩選配置資訊的一組記憶體保留標識碼。 相關聯的列舉具有下列格式。
typedef enum _STORAGE_RESERVE_ID {
StorageReserveIdNone = 0,
StorageReserveIdHard,
StorageReserveIdSoft,
StorageReserveIdUpdateScratch,
StorageReserveIdMax
} STORAGE_RESERVE_ID, *PSTORAGE_RESERVE_ID;
備註
第一個FSCTL_QUERY_FILE_LAYOUT要求上會設定QUERY_FILE_LAYOUT_RESTART旗標。 如果要求中包含篩選範圍,則會在設定 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) |