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