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時,篩選聯集的ClusterRanges成員會用於範圍篩選。 否則,如果 FilterType是QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID則會使用 FileReferenceRanges 成員來篩選範圍。

必要條件

   
最低支援的用戶端 Windows 8
標頭 ntifs.h (包含 Ntifs.h)

另請參閱

FSCTL_QUERY_FILE_LAYOUT

QUERY_FILE_LAYOUT_OUTPUT