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) |