Condividi tramite


struttura FSRTL_COMMON_FCB_HEADER (ntifs.h)

Non utilizzare la struttura FSRTL_COMMON_FCB_HEADER all'esterno della struttura FSRTL_ADVANCED_FCB_HEADER. La struttura FSRTL_COMMON_FCB_HEADER contiene informazioni di contesto che un file system gestisce su un file, una directory, un volume o un flusso di dati alternativo.

Sintassi

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;

Membri

NodeTypeCode

Riservato per l'uso del sistema.

NodeByteSize

Riservato per l'uso del sistema.

Flags

Maschera di bit di flag che indicano il supporto per varie funzionalità. Questo membro deve essere una combinazione OR bit per bit di uno o più dei valori seguenti:

Valore Significato
FSRTL_FLAG_FILE_MODIFIED Riservato per l'uso del sistema.
FSRTL_FLAG_FILE_LENGTH_CHANGED Riservato per l'uso del sistema.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Riservato per l'uso del sistema. I driver del file system (ad eccezione dei driver di filtro) che devono impostare o cancellare un limite di dati modificati per un file devono chiamare CcSetDirtyPageThreshold.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX Riservato per l'uso del sistema.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Riservato per l'uso del sistema.
FSRTL_FLAG_USER_MAPPED_FILE Gestione cache imposta questo flag per indicare che una visualizzazione è mappata a un file.
FSRTL_FLAG_ADVANCED_HEADER Questo flag indica che il file system usa FSRTL_ADVANCED_FCB_HEADER anziché FSRTL_COMMON_FCB_HEADER nelle strutture del blocco di controllo file . Questo flag è obbligatorio perché l'uso della struttura di FSRTL_COMMON_FCB_HEADER all'esterno della struttura FSRTL_ADVANCED_FCB_HEADER è deprecato.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE Riservato per l'uso del sistema.

IsFastIoPossible

Questo membro deve essere uno dei valori seguenti:

Valore Significato
FastIoIsPossible L'I/O veloce è possibile.
FastIoIsQuestionable Esiste un blocco di intervallo di byte esclusivo per il file. Il chiamante deve chiamare routine fastIoCheckIfPossible del file system.
FastIoIsNotPossible L'fcb per il file non è valido o esiste un blocco opportunistico (detto anche "oplock") per il file.

Per altre informazioni su questi valori, vedere le voci di riferimento per FsRtlAreThereCurrentFileLocks, FsRtlCopyReade FsRtlCopyWrite.

Flags2

Maschera di bit dei flag impostati dal file system per indicare il supporto per varie funzionalità. Questo membro deve essere uno o più dei valori seguenti:

Valore Significato
FSRTL_FLAG2_DO_MODIFIED_WRITE Vedere i dettagli che seguono questa tabella.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Se questo flag è impostato, Gestione cache scarica ed elimina la mappa della cache quando un utente esegue il mapping di un file per la prima volta.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS Questo flag indica che il file system usa FSRTL_ADVANCED_FCB_HEADER anziché FSRTL_COMMON_FCB_HEADER nelle relative strutture FCB. Questo flag è obbligatorio perché l'uso della struttura FSRTL_COMMON_FCB_HEADER all'esterno della struttura FSRTL_ADVANCED_FCB_HEADER è deprecato.
FSRTL_FLAG2_IS_PAGING_FILE Se impostata, questa intestazione FCB è associata a un file di pagina.

Il flag FSRTL_FLAG2_DO_MODIFIED_WRITE viene usato insieme al membro FsContext2 per il flusso di file come indicato di seguito:

  • Se il FsContext2 membro dell'oggetto file non è NULL, il flusso di file rappresenta un'istanza aperta di un file o di una directory e il valore di questo flag viene ignorato dal sistema operativo.

  • Se il FsContext2 membro dell'oggetto file è NULL e questo flag non è impostato, l'oggetto file è un oggetto file di flusso e il flusso è un flusso modificato-no-write (MNW).

  • Se il FsContext2 membro dell'oggetto file è NULL e questo flag viene impostato, l'oggetto file è un oggetto file di flusso e il flusso è scrivibile.

Reserved

Riservato per l'uso del sistema. I driver devono impostare questo campo di bit su zero.

Version

Riservato per l'uso del sistema. Questo campo di bit viene impostato dalla macro FsRtlSetupAdvancedHeader o FsRtlSetupAdvancedHeaderEx. A partire da Windows Vista, il valore di questo campo di bit è FSRTL_FCB_HEADER_V1 o superiore; in caso contrario, il valore è FSRTL_FCB_HEADER_V0. Per altre informazioni, vedere FSRTL_ADVANCED_FCB_HEADER.

Resource

Puntatore a una variabile di risorsa inizializzata, per cui il file system fornisce la risorsa di archiviazione che verrà usata per sincronizzare l'accesso di I/O al cluster di failover. La variabile di risorsa deve essere allocata dal pool non di paging.

I driver di filtro devono considerare questo membro come opaco.

PagingIoResource

Puntatore a una variabile di risorsa aggiuntiva, per cui il file system fornisce la risorsa di archiviazione che verrà usata per sincronizzare l'accesso di I/O di paging al cluster di failover. La variabile di risorsa deve essere allocata dal pool non di paging.

I driver di filtro devono considerare questo membro come opaco.

AllocationSize

Dimensioni di allocazione per il flusso di file.

Per altre informazioni sui membri AllocationSize, FileSizee membri ValidDataLength, vedere CcInitializeCacheMap.

FileSize

Dimensioni del file del flusso di file.

ValidDataLength

Lunghezza dei dati valida del flusso di file.

Osservazioni

I file system devono impostare il FsContext membro di ogni oggetto file in modo che punti a una struttura FSRTL_ADVANCED_FCB_HEADER. Questa struttura può essere incorporata all'interno di una struttura di contesto del flusso specifica del file system (la parte restante di questa struttura è specifica del file system). In genere, la struttura FSRTL_ADVANCED_FCB_HEADER è un blocco di controllo file (FCB). Tuttavia, in alcuni file system che supportano più flussi di dati, ad esempio NTFS, si tratta di un blocco di controllo di flusso (SCB).

Per supportare la gestione filtri e i contesti di filtro, i file system devono usare la struttura FSRTL_ADVANCED_FCB_HEADER nei relativi oggetti contesto di flusso. Tutti i file system Microsoft usano questa struttura e anche tutti gli sviluppatori di file system di terze parti devono farlo. I cluster di failover e le librerie di database per tutte le classi di richieste aperte, incluse le richieste di apertura del volume, devono includere questa struttura.

Se il file viene usato come file di paging, la struttura FSRTL_ADVANCED_FCB_HEADER deve essere allocata dal pool non di paging. In caso contrario, può essere allocata da un pool di pagine o non di paging.

Fabbisogno

Requisito Valore
intestazione ntifs.h (include Ntifs.h, Fltkernel.h)

Vedere anche

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx