Compatibilidad del sistema de archivos con contextos
Para admitir contextos de archivo (si procede), contextos de secuencia y contextos de objeto de archivo (identificador de secuencia), un sistema de archivos debe usar la estructura FSRTL_ADVANCED_FCB_HEADER . Todos los sistemas de archivos de Microsoft Windows usan esta estructura y también se recomienda encarecidamente que todos los desarrolladores de sistemas de archivos de terceros lo hagan. Para obtener más información, vea FsRtlSetupAdvancedHeader y FSRTL_ADVANCED_FCB_HEADER.
Los sistemas de archivos NTFS y FAT no admiten contextos de archivos, secuencias o objetos de archivo en archivos de paginación, en la ruta de acceso previa o posterior a la creación, o para las operaciones de IRP_MJ_NETWORK_QUERY_OPEN .
Un controlador de minifiltro puede determinar si un sistema de archivos admite contextos de secuencia y contextos de objeto de archivo para un objeto de archivo determinado llamando a FltSupportsStreamContexts y FltSupportsStreamHandleContexts, respectivamente.
Los contextos de archivo están disponibles en Windows Vista y versiones posteriores.
En el caso de los sistemas de archivos (como FAT) que admiten solo un flujo de datos por archivo, los contextos de archivo son equivalentes a los contextos de flujo. Estos sistemas de archivos suelen admitir contextos de secuencia, pero no admiten contextos de archivo. En su lugar, el administrador de filtros proporciona esta compatibilidad, mediante la compatibilidad existente del sistema de archivos para los contextos de secuencia. En el caso de las instancias de controlador de minifiltro asociadas a estos sistemas de archivos, FltSupportsFileContexts devuelve FALSE, mientras que FltSupportsFileContextsEx devuelve TRUE (cuando se pasa un valor no NULL válido para el parámetro Instance ).
Si no se admite un tipo de contexto en un archivo, el minifiltro no puede adjuntar un contexto de ese tipo a ese archivo.
Para admitir contextos de archivo, un sistema de archivos debe:
Inserte un miembro FileContextSupportPointer de tipo PVOID en su estructura de contexto de archivo, normalmente el bloque de contexto de archivo (FCB). El sistema de archivos debe inicializar este miembro en NULL.
Use FsRtlSetupAdvancedHeaderEx (en lugar de FsRtlSetupAdvancedHeader) para inicializar su estructura de contexto de flujo, pasando un puntero válido al miembro FileContextSupportPointer (incrustado en la estructura de contexto de archivo correspondiente) para el parámetro FileContextSupportPointer . Para obtener más información, vea FsRtlSetupAdvancedHeaderEx y FSRTL_ADVANCED_FCB_HEADER.
Llame a FsRtlTeardownPerFileContexts para liberar todas las estructuras de contexto de archivo que los controladores de filtro y minifiltro se han asociado a un archivo cuando el sistema de archivos elimina su estructura de contexto de archivo para el archivo.