Partager via


QUERY_FILE_LAYOUT_INPUT structure (ntifs.h)

La structure QUERY_FILE_LAYOUT_INPUT sélectionne les entrées de disposition de fichier qui sont retournées à partir d’une demande de FSCTL_QUERY_FILE_LAYOUT .

Syntaxe

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;

Membres

DUMMYUNIONNAME

DUMMYUNIONNAME.FilterEntryCount

Nombre d’entrées de filtre dans le tableau Filtre .

DUMMYUNIONNAME.NumberOfPairs

Nom d’origine du champ lorsqu’il n’y avait qu’un seul type de filtre. L’union consiste simplement à maintenir la compatibilité du code.

Flags

Indique les entrées de disposition de fichier qui sont incluses dans les résultats de la requête. Indicateurs est défini sur une combinaison valide des valeurs suivantes.

Valeur Signification
QUERY_FILE_LAYOUT_INCLUDE_EXTENTS Stream les entrées d’extension sont incluses dans les résultats de la requête. Pour utiliser cet indicateur, l’indicateur QUERY_FILE_LAYOUT_INCLUDE_STREAMS doit également être défini.
QUERY_FILE_LAYOUT_INCLUDE_EXTRA_INFO Les entrées de nom d’informations de fichier supplémentaires sont incluses dans les résultats de la requête.
QUERY_FILE_LAYOUT_INCLUDE_NAMES Les entrées de nom de fichier sont incluses dans les résultats de la requête.
QUERY_FILE_LAYOUT_INCLUDE_STREAMS Les entrées de flux de fichiers sont incluses dans les résultats de la requête.
QUERY_FILE_LAYOUT_RESTART Réinitialisez l’itérateur d’entrée de disposition de fichier au début du volume.
QUERY_FILE_LAYOUT_INCLUDE_STREAMS_WITH_NO_CLUSTERS_ALLOCATED Incluez des entrées pour les flux résidents et les attributs non alloués. Pour utiliser cet indicateur, l’indicateur QUERY_FILE_LAYOUT_INCLUDE_STREAMS doit également être défini.

FilterType

Spécifie une méthode de filtrage pour restreindre les informations de disposition retournées. Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
QUERY_FILE_LAYOUT_FILTER_TYPE_NONE N’effectuez aucun filtrage et retournez toutes les informations. Lorsque vous utilisez ce type, NumberOfPairs doit être 0.
QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS Limitez les informations de disposition de filtre aux plages dans Filter.ClusterRanges.
QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID Limitez les informations de disposition de filtre aux plages dans Filter.FileReferenceRanges.

Reserved

Réservé pour le système.

Filter

Tableau de structures de filtre utilisées pour sélectionner des informations de disposition spécifiques. Celles-ci contiennent des plages de référence de cluster ou de fichiers. La longueur du tableau est spécifiée par le membre NumberOfPairs . Chaque plage doit être distincte et ne peut pas chevaucher une autre plage.

Ce membre est ignoré si QUERY_FILE_LAYOUT_FILTER_TYPE_NONE est spécifié dans FilterType.

Filter.ClusterRanges[1]

Spécifie un ensemble de plages de cluster pour filtrer les informations de disposition. La structure de plage a le format suivant.

typedef struct _CLUSTER_RANGE {
    LARGE_INTEGER    StartingCluster;
    LARGE_INTEGER    ClusterCount;
} CLUSTER_RANGE, *PCLUSTER_RANGE;

Filter.FileReferenceRanges[1]

Spécifie un ensemble de plages de références de fichiers pour filtrer les informations de disposition. Disponible à partir de Windows 10 version 1809. La structure de plage a le format suivant.

typedef struct _FILE_REFERENCE_RANGE {
    LARGE_INTEGER    StartingFileReference;
    LARGE_INTEGER    EndingReferenceNumber;
} FILE_REFERENCE_RANGE, *PFILE_REFERENCE_RANGE;

Filter.StorageReserveIds[1]

Spécifie un ensemble d’ID de réserve de stockage pour filtrer les informations de disposition. L’énumération associée a le format suivant.

typedef enum _STORAGE_RESERVE_ID {

    StorageReserveIdNone = 0,
    StorageReserveIdHard,
    StorageReserveIdSoft,
    StorageReserveIdUpdateScratch,

    StorageReserveIdMax

} STORAGE_RESERVE_ID, *PSTORAGE_RESERVE_ID;

Remarques

L’indicateur QUERY_FILE_LAYOUT_RESTART est défini lors de la première demande FSCTL_QUERY_FILE_LAYOUT. Si des plages de filtres sont incluses dans la requête, elles sont mises en cache lorsque QUERY_FILE_LAYOUT_RESTART est défini. D’autres demandes retournent des entrées de fichier de disposition jusqu’à la fin du volume ou jusqu’à ce que les plages de filtres soient épuisées.

Si QUERY_FILE_LAYOUT_RESTART est à nouveau défini pour le même volume, la position de disposition du fichier est réinitialisée au début du volume. En outre, les plages de filtres sont re-mises en cache et leur ordre d’évaluation est réinitialisé à la première plage.

Les entrées de disposition de fichier sont retournées dans la mémoire tampon de sortie en suivant une structure QUERY_FILE_LAYOUT_OUTPUT .

Lorsque FilterType est QUERY_FILE_LAYOUT_FILTER_TYPE_CLUSTERS, le membre ClusterRanges de l’union Filter est utilisé pour le filtrage de plage. Sinon, si FilterType est QUERY_FILE_LAYOUT_FILTER_TYPE_FILEID, le membre FileReferenceRanges est utilisé pour le filtrage de plage.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8
En-tête ntifs.h (include Ntifs.h)

Voir aussi

FSCTL_QUERY_FILE_LAYOUT

QUERY_FILE_LAYOUT_OUTPUT