estructura FSRTL_COMMON_FCB_HEADER (ntifs.h)
No use la estructura FSRTL_COMMON_FCB_HEADER fuera de la estructura de FSRTL_ADVANCED_FCB_HEADER . La estructura FSRTL_COMMON_FCB_HEADER contiene información de contexto que mantiene un sistema de archivos sobre un archivo, directorio, volumen o flujo de datos alternativo.
Sintaxis
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;
Miembros
NodeTypeCode
Reservado para uso del sistema.
NodeByteSize
Reservado para uso del sistema.
Flags
Máscara de bits de marcas que indican compatibilidad con varias características. Este miembro debe ser una combinación OR bit a bit de uno o varios de los siguientes valores:
Valor | Significado |
---|---|
FSRTL_FLAG_FILE_MODIFIED | Reservado para uso del sistema. |
FSRTL_FLAG_FILE_LENGTH_CHANGED | Reservado para uso del sistema. |
FSRTL_FLAG_LIMIT_MODIFIED_PAGES | Reservado para uso del sistema. Los controladores del sistema de archivos (excepto los controladores de filtro) que deben establecer o borrar un límite de datos modificados para un archivo deben llamar a CcSetDirtyPageThreshold. |
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX | Reservado para uso del sistema. |
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH | Reservado para uso del sistema. |
FSRTL_FLAG_USER_MAPPED_FILE | El Administrador de caché establece esta marca para indicar que una vista está asignada a un archivo. |
FSRTL_FLAG_ADVANCED_HEADER | Esta marca indica que el sistema de archivos usa FSRTL_ADVANCED_FCB_HEADER en lugar de FSRTL_COMMON_FCB_HEADER en sus estructuras de bloque de control de archivos (FCB). Esta marca es necesaria porque el uso de la estructura FSRTL_COMMON_FCB_HEADER fuera de la estructura de FSRTL_ADVANCED_FCB_HEADER está en desuso. |
FSRTL_FLAG_EOF_ADVANCE_ACTIVE | Reservado para uso del sistema. |
IsFastIoPossible
Este miembro debe ser uno de los siguientes valores:
Valor | Significado |
---|---|
FastIoIsPossible | Es posible la E/S rápida. |
FastIoIsQuestionable | Existe un bloqueo de intervalo de bytes exclusivo para el archivo. El llamador debe llamar a la rutina FastIoCheckIfPossible del sistema de archivos. |
FastIoIsNotPossible | El FCB del archivo es incorrecto o existe un bloqueo oportunista (también denominado "oplock") para el archivo. |
Para obtener más información sobre estos valores, vea las entradas de referencia para FsRtlAreThereCurrentFileLocks, FsRtlCopyRead y FsRtlCopyWrite.
Flags2
Máscara de bits de marcas que el sistema de archivos establece para indicar la compatibilidad con varias características. Este miembro debe ser uno o varios de los valores siguientes:
Valor | Significado |
---|---|
FSRTL_FLAG2_DO_MODIFIED_WRITE | Consulte los detalles que siguen a esta tabla. |
FSRTL_FLAG2_PURGE_WHEN_MAPPED | Si se establece esta marca, el Administrador de caché vaciará y purgará el mapa de caché cuando un usuario asigne un archivo por primera vez. |
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS | Esta marca indica que el sistema de archivos usa FSRTL_ADVANCED_FCB_HEADER en lugar de FSRTL_COMMON_FCB_HEADER en sus estructuras FCB. Esta marca es necesaria porque el uso de la estructura FSRTL_COMMON_FCB_HEADER fuera de la estructura de FSRTL_ADVANCED_FCB_HEADER está en desuso. |
FSRTL_FLAG2_IS_PAGING_FILE | Si se establece, este encabezado FCB está asociado a un archivo de página. |
La marca FSRTL_FLAG2_DO_MODIFIED_WRITE se usa junto con el miembro FsContext2 del objeto de archivo para la secuencia de archivos de la siguiente manera:
Si el miembro FsContext2 del objeto de archivo no es NULL, la secuencia de archivos representa una instancia abierta de un archivo o un directorio y el sistema operativo o omite el valor de esta marca.
Si el miembro FsContext2 del objeto de archivo es NULL y no se establece esta marca, el objeto de archivo es un objeto de archivo de secuencia y la secuencia es una secuencia modificada sin escritura (MNW).
Si el miembro FsContext2 del objeto de archivo es NULL y se establece esta marca, el objeto de archivo es un objeto de archivo de secuencia y la secuencia se puede escribir.
Reserved
Reservado para uso del sistema. Los controladores deben establecer este campo de bits en cero.
Version
Reservado para uso del sistema. Este campo de bits se establece mediante la macro FsRtlSetupAdvancedHeader o FsRtlSetupAdvancedHeaderEx . A partir de Windows Vista, el valor de este campo de bits es FSRTL_FCB_HEADER_V1 o superior; de lo contrario, el valor es FSRTL_FCB_HEADER_V0. Consulte FSRTL_ADVANCED_FCB_HEADER para obtener más información.
Resource
Puntero a una variable de recursos inicializada, para la que el sistema de archivos proporciona el almacenamiento que se usará para sincronizar el acceso de E/S a la FCB. La variable de recurso se debe asignar desde un grupo no paginado.
Los controladores de filtro deben tratar este miembro como opaco.
PagingIoResource
Puntero a una variable de recurso adicional, para la que el sistema de archivos proporciona el almacenamiento que se usará para sincronizar el acceso de E/S de paginación al FCB. La variable de recurso se debe asignar desde un grupo no paginado.
Los controladores de filtro deben tratar este miembro como opaco.
AllocationSize
Tamaño de asignación para la secuencia de archivos.
Para obtener más información sobre los miembros AllocationSize, FileSize y ValidDataLength , vea CcInitializeCacheMap.
FileSize
Tamaño de archivo de la secuencia de archivos.
ValidDataLength
Longitud de datos válida del flujo de archivos.
Comentarios
Los sistemas de archivos deben establecer el miembro FsContext de cada objeto de archivo para que apunte a una estructura de FSRTL_ADVANCED_FCB_HEADER . Esta estructura se puede incrustar dentro de una estructura de objetos de contexto de secuencia específica del sistema de archivos (el resto de esta estructura es específica del sistema de archivos). Normalmente, la estructura FSRTL_ADVANCED_FCB_HEADER es un bloque de control de archivos (FCB). Sin embargo, en algunos sistemas de archivos que admiten varios flujos de datos, como NTFS, es un bloque de control de flujo (SCB).
Para admitir el administrador de filtros y los contextos de filtro, los sistemas de archivos deben usar la estructura FSRTL_ADVANCED_FCB_HEADER en sus objetos de contexto de secuencia. Todos los sistemas de archivos de Microsoft usan esta estructura y todos los desarrolladores de sistemas de archivos de terceros también deben hacerlo. Los FCB y los SCB para todas las clases de solicitudes abiertas, incluidas las solicitudes abiertas de volumen, deben incluir esta estructura.
Si el archivo se usa como archivo de paginación, la estructura de FSRTL_ADVANCED_FCB_HEADER debe asignarse desde un grupo no paginado. De lo contrario, se puede asignar desde un grupo paginado o no paginado.
Requisitos
Requisito | Valor |
---|---|
Header | ntifs.h (incluya Ntifs.h, Fltkernel.h) |