Partager via


structure FSRTL_COMMON_FCB_HEADER (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 gère 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é à l’utilisation du système.

NodeByteSize

Réservé à l’utilisation du système.

Flags

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

Valeur Signification
FSRTL_FLAG_FILE_MODIFIED Réservé à l’utilisation du système.
FSRTL_FLAG_FILE_LENGTH_CHANGED Réservé à l’utilisation du système.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Réservé à l’utilisation du 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é à l’utilisation du système.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Réservé à l’utilisation du 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 fichiers (FCB). Cet indicateur est requis, 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é à l’utilisation du système.

IsFastIoPossible

Ce membre doit être 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 pour le 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, FsRtlCopyReadet 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 suivants 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 d’abord un fichier.
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 requis, 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 Si cette valeur est définie, 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 de fichier pour le flux de fichiers comme suit :

  • Si le FsContext2 membre de l’objet de fichier 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 FsContext2 membre de l’objet de fichier a la valeur NULL et que cet indicateur n’est pas défini, l’objet de fichier est un objet de fichier de flux et le flux est un flux MNW (modification sans écriture).

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

Reserved

Réservé à l’utilisation du système. Les pilotes doivent définir ce champ bit sur zéro.

Version

Réservé à l’utilisation du système. Ce champ de bits est défini par la FsRtlSetupAdvancedHeader ou FsRtlSetupAdvancedHeaderEx macro. À 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 d’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 aux E/S de pagination 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.

AllocationSize

Taille d’allocation pour le flux de fichiers.

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

FileSize

Taille du fichier du flux de fichiers.

ValidDataLength

Longueur de données valide du flux de fichiers.

Remarques

Les systèmes de fichiers doivent définir le FsContext membre de chaque objet de fichier pour qu’il pointe vers une structure FSRTL_ADVANCED_FCB_HEADER. Cette structure peut être incorporée à l’intérieur d’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 et les SBS pour toutes les classes de requêtes ouvertes, y compris les demandes d’ouverture de 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 du pool non paginé. Sinon, il peut être alloué à partir d’un pool paginé ou non paginé.

Exigences

Exigence Valeur
d’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