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