FSRTL_COMMON_FCB_HEADER struttura (ntifs.h)

Non usare 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;

Members

NodeTypeCode

Riservato per l'utilizzo nel sistema.

NodeByteSize

Riservato per l'utilizzo nel sistema.

Flags

Maschera 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'utilizzo nel sistema.
FSRTL_FLAG_FILE_LENGTH_CHANGED Riservato per l'utilizzo nel sistema.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Riservato per l'utilizzo nel sistema. I driver di 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'utilizzo nel sistema.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Riservato per l'utilizzo nel sistema.
FSRTL_FLAG_USER_MAPPED_FILE Gestione cache imposta questo flag per indicare che una visualizzazione viene 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 (FCB). Questo flag è obbligatorio perché l'uso della struttura FSRTL_COMMON_FCB_HEADER all'esterno della struttura FSRTL_ADVANCED_FCB_HEADER è deprecata.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE Riservato per l'utilizzo nel sistema.

IsFastIoPossible

Questo membro deve essere uno dei valori seguenti:

Valore Significato
FastIoIsPossible È possibile I/O veloce.
FastIoIsQuestionable Esiste un blocco di intervallo di byte esclusivo per il file. Il chiamante deve chiamare la routine FastIoCheckIfPossible del file system.
FastIoIsNotPossible Il fcB per il file non è valido o un blocco opportunistico (denominato anche "oplock") esiste per il file.

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

Flags2

Maschera di 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 seguenti di questa tabella.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Se questo flag è impostato, Gestione cache scarica e elimina la mappa della cache quando un utente esegue prima il mapping di un file.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS Questo flag indica che il file system usa FSRTL_ADVANCED_FCB_HEADER anziché FSRTL_COMMON_FCB_HEADER nelle strutture FCB. Questo flag è obbligatorio perché l'uso della struttura FSRTL_COMMON_FCB_HEADER all'esterno della struttura FSRTL_ADVANCED_FCB_HEADER è deprecata.
FSRTL_FLAG2_IS_PAGING_FILE Se impostata, questa intestazione FCB è associata a un file di pagina.

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

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

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

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

Reserved

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

Version

Riservato per l'utilizzo nel sistema. Questo campo bit viene impostato dalla macro FsRtlSetupAdvancedHeader o FsRtlSetupAdvancedHeaderEx . A partire da Windows Vista, il valore di questo campo a bit è FSRTL_FCB_HEADER_V1 o maggiore; 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 l'archiviazione che verrà usata per sincronizzare l'accesso di I/O al fcB. La variabile di risorsa deve essere allocata dal pool non a pagina.

I driver di filtro devono trattare questo membro come opaco.

PagingIoResource

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

I driver di filtro devono trattare questo membro come opaco.

AllocationSize

Dimensioni di allocazione per il flusso di file.

Per altre informazioni sui membri AllocationSize, FileSize e ValidDataLength , vedere CcInitializeCacheMap.

FileSize

Dimensioni del file del flusso di file.

ValidDataLength

Lunghezza valida dei dati del flusso di file.

Commenti

I file system devono impostare il membro FsContext di ogni oggetto file per puntare a una struttura FSRTL_ADVANCED_FCB_HEADER . Questa struttura può essere incorporata all'interno di una struttura dell'oggetto contesto di flusso specifico 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, è un blocco di controllo di flusso (SCB).

Per supportare gestione filtri e filtrare i contesti, i file system devono usare la struttura FSRTL_ADVANCED_FCB_HEADER negli oggetti contesto di flusso. Tutti i file system Microsoft usano questa struttura e tutti gli sviluppatori di file system di terze parti devono farlo anche. I database di database di failover e gli SBS per tutte le classi di richieste aperte, incluse le richieste aperte 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 pagine. In caso contrario, può essere allocata da un pool di pagine o non a pagine.

Requisiti

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

Vedi anche

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx