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)

另請參閱

FSCTL_QUERY_FILE_LAYOUT

QUERY_FILE_LAYOUT_OUTPUT