Condividi tramite


Supporto del file system per i contesti

Per supportare contesti di file (se applicabile), contesti di flusso e contesti di oggetto file (handle di flusso), un file system deve usare la struttura FSRTL_ADVANCED_FCB_HEADER . Tutti i file system di Microsoft Windows usano questa struttura e tutti gli sviluppatori di file system di terze parti sono fortemente invitati a farlo. Per altre informazioni, vedere FsRtlSetupAdvancedHeader e FSRTL_ADVANCED_FCB_HEADER.

I file system NTFS e FAT non supportano contesti di file, flusso o oggetto file nei file di paging, nel percorso di pre-creazione o post-chiusura o per le operazioni di IRP_MJ_NETWORK_QUERY_OPEN .

Un driver minifilter può determinare se un file system supporta contesti di flusso e contesti di oggetto file per un determinato oggetto file chiamando rispettivamente FltSupportsStreamContexts e FltSupportsStreamHandleContexts.

I contesti di file sono disponibili in Windows Vista e versioni successive.

Per i file system (ad esempio FAT) che supportano solo un singolo flusso di dati per file, i contesti di file sono equivalenti ai contesti di flusso. Tali file system supportano in genere contesti di flusso, ma non supportano contesti di file. Il gestore filtri offre invece questo supporto, usando il supporto esistente del file system per i contesti di flusso. Per le istanze del driver minifilter associate a questi file system, FltSupportsFileContexts restituisce FALSE, mentre FltSupportsFileContextsEx restituisce TRUE (quando viene passato un valore non NULL valido per il parametro Instance ).

Se un tipo di contesto non è supportato in un file, il minifilter non può collegare un contesto di tale tipo a tale file.

Per supportare i contesti di file, un file system deve:

  • Incorporare un membro FileContextSupportPointer di tipo PVOID nella struttura del contesto di file, in genere il blocco di contesto del file . Il file system deve inizializzare questo membro su NULL.

  • Utilizzare FsRtlSetupAdvancedHeaderEx (anziché FsRtlSetupAdvancedHeader) per inizializzare la struttura del contesto di flusso, passando un puntatore valido al membro FileContextSupportPointer (incorporato nella struttura del contesto di file corrispondente) per il parametro FileContextSupportPointer . Per altre informazioni, vedere FsRtlSetupAdvancedHeaderEx e FSRTL_ADVANCED_FCB_HEADER.

  • Chiamare FsRtlTeardownPerFileContexts per liberare tutte le strutture di contesto di file che filtrano e minifilter driver sono associati a un file quando il file system elimina la struttura del contesto di file per il file.