FSRTL_COMMON_FCB_HEADER structure (ntifs.h)

N’utilisez pas la structure FSRTL_COMMON_FCB_HEADER en dehors de la structure FSRTL_ADVANCED_FCB_HEADER . La structure FSRTL_COMMON_FCB_HEADER contient des informations de contexte qu’un système de fichiers conserve sur un fichier, un répertoire, un volume ou un autre flux de données.

Syntaxe

typedef struct _FSRTL_COMMON_FCB_HEADER {
  CSHORT        NodeTypeCode;
  CSHORT        NodeByteSize;
  UCHAR         Flags;
  UCHAR         IsFastIoPossible;
  UCHAR         Flags2;
  UCHAR         Reserved : 4;
  UCHAR         Version : 4;
  PERESOURCE    Resource;
  PERESOURCE    PagingIoResource;
  LARGE_INTEGER AllocationSize;
  LARGE_INTEGER FileSize;
  LARGE_INTEGER ValidDataLength;
} FSRTL_COMMON_FCB_HEADER;

Membres

NodeTypeCode

Réservé pour le système.

NodeByteSize

Réservé pour le système.

Flags

Masque de bits d’indicateurs qui indiquent la prise en charge de différentes fonctionnalités. Ce membre doit être une combinaison de bits OU d’une ou plusieurs des valeurs suivantes :

Valeur Signification
FSRTL_FLAG_FILE_MODIFIED Réservé pour le système.
FSRTL_FLAG_FILE_LENGTH_CHANGED Réservé pour le système.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Réservé pour le système. Les pilotes de système de fichiers (à l’exception des pilotes de filtre) qui doivent définir ou effacer une limite de données modifiées pour un fichier doivent appeler CcSetDirtyPageThreshold.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX Réservé pour le système.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Réservé pour le système.
FSRTL_FLAG_USER_MAPPED_FILE Le Gestionnaire de cache définit cet indicateur pour indiquer qu’une vue est mappée à un fichier.
FSRTL_FLAG_ADVANCED_HEADER Cet indicateur indique que le système de fichiers utilise FSRTL_ADVANCED_FCB_HEADER au lieu de FSRTL_COMMON_FCB_HEADER dans ses structures de bloc de contrôle de fichier (FCB). Cet indicateur est nécessaire car l’utilisation de la structure FSRTL_COMMON_FCB_HEADER en dehors de la structure FSRTL_ADVANCED_FCB_HEADER est déconseillée.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE Réservé pour le système.

IsFastIoPossible

Ce membre doit avoir l’une des valeurs suivantes :

Valeur Signification
FastIoIsPossible Les E/S rapides sont possibles.
FastIoIsQuestionable Un verrou de plage d’octets exclusif existe pour le fichier. L’appelant doit appeler la routine FastIoCheckIfPossible du système de fichiers.
FastIoIsNotPossible Le fcb du fichier est incorrect ou un verrou opportuniste (également appelé « oplock ») existe pour le fichier.

Pour plus d’informations sur ces valeurs, consultez les entrées de référence pour FsRtlAreThereCurrentFileLocks, FsRtlCopyRead et FsRtlCopyWrite.

Flags2

Masque de bits des indicateurs que le système de fichiers définit pour indiquer la prise en charge de différentes fonctionnalités. Ce membre doit être une ou plusieurs des valeurs suivantes :

Valeur Signification
FSRTL_FLAG2_DO_MODIFIED_WRITE Consultez les détails qui suivent ce tableau.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Si cet indicateur est défini, le Gestionnaire de cache vide et vide la carte du cache lorsqu’un utilisateur mappe un fichier pour la première fois.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS Cet indicateur indique que le système de fichiers utilise FSRTL_ADVANCED_FCB_HEADER au lieu de FSRTL_COMMON_FCB_HEADER dans ses structures FCB. Cet indicateur est obligatoire car l’utilisation de la structure FSRTL_COMMON_FCB_HEADER en dehors de la structure FSRTL_ADVANCED_FCB_HEADER est déconseillée.
FSRTL_FLAG2_IS_PAGING_FILE S’il est défini, cet en-tête FCB est associé à un fichier de page.

L’indicateur FSRTL_FLAG2_DO_MODIFIED_WRITE est utilisé avec le membre FsContext2 de l’objet file pour le flux de fichier comme suit :

  • Si le membre FsContext2 de l’objet file n’est pas NULL, le flux de fichiers représente une instance ouverte d’un fichier ou d’un répertoire, et la valeur de cet indicateur est ignorée par le système d’exploitation.

  • Si le membre FsContext2 de l’objet file est NULL et que cet indicateur n’est pas défini, l’objet file est un objet de fichier de flux et le flux est un flux MNW (modified-no-write).

  • Si le membre FsContext2 de l’objet file est NULL et que cet indicateur est défini, l’objet file est un objet de fichier de flux et le flux est accessible en écriture.

Reserved

Réservé pour le système. Les pilotes doivent définir ce champ de bits sur zéro.

Version

Réservé pour le système. Ce champ de bits est défini par la macro FsRtlSetupAdvancedHeader ou FsRtlSetupAdvancedHeaderEx . À compter de Windows Vista, la valeur de ce champ binaire est FSRTL_FCB_HEADER_V1 ou supérieure ; sinon, la valeur est FSRTL_FCB_HEADER_V0. Pour plus d’informations, consultez FSRTL_ADVANCED_FCB_HEADER .

Resource

Pointeur vers une variable de ressource initialisée, pour laquelle le système de fichiers fournit le stockage qui sera utilisé pour synchroniser l’accès aux E/S au fcb. La variable de ressource doit être allouée à partir d’un pool non paginé.

Les pilotes de filtre doivent traiter ce membre comme opaque.

PagingIoResource

Pointeur vers une variable de ressource supplémentaire, pour laquelle le système de fichiers fournit le stockage qui sera utilisé pour synchroniser l’accès d’E/S de pagination à l’instance FCB. La variable de ressource doit être allouée à partir d’un pool non paginé.

Les pilotes de filtre doivent traiter ce membre comme opaque.

AllocationSize

Taille d’allocation pour le flux de fichiers.

Pour plus d’informations sur les membres AllocationSize, FileSize et ValidDataLength , consultez CcInitializeCacheMap.

FileSize

Taille de fichier du flux de fichiers.

ValidDataLength

Longueur de données valide du flux de fichier.

Remarques

Les systèmes de fichiers doivent définir le membre FsContext de chaque objet de fichier pour qu’il pointe vers une structure FSRTL_ADVANCED_FCB_HEADER . Cette structure peut être incorporée dans une structure d’objet de contexte de flux spécifique au système de fichiers (le reste de cette structure est spécifique au système de fichiers). En règle générale, la structure FSRTL_ADVANCED_FCB_HEADER est un bloc de contrôle de fichier (FCB). Toutefois, sur certains systèmes de fichiers qui prennent en charge plusieurs flux de données, tels que NTFS, il s’agit d’un bloc de contrôle de flux (SCB).

Pour prendre en charge le gestionnaire de filtres et les contextes de filtre, les systèmes de fichiers doivent utiliser la structure FSRTL_ADVANCED_FCB_HEADER dans leurs objets de contexte de flux. Tous les systèmes de fichiers Microsoft utilisent cette structure, et tous les développeurs de systèmes de fichiers tiers doivent également le faire. Les bases de données fcbs et SBS pour toutes les classes de demandes ouvertes, y compris les demandes d’ouverture en volume, doivent inclure cette structure.

Si le fichier est utilisé comme fichier de pagination, la structure FSRTL_ADVANCED_FCB_HEADER doit être allouée à partir d’un pool non paginé. Sinon, il peut être alloué à partir d’un pool paginé ou non paginé.

Configuration requise

Condition requise Valeur
En-tête ntifs.h (include Ntifs.h, Fltkernel.h)

Voir aussi

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx