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 | 數據流範圍專案會包含在查詢結果中。 若要使用此旗標,也必須設定 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時,ClusterRangesFilter 等位的成員會用於範圍篩選。 否則,如果 FilterType 為 QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID,則會使用 fileReferenceRanges 成員進行範圍篩選。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 8 |
標頭 | ntifs.h (include Ntifs.h) |