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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per