Compartir a través de


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 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 autor de la llamada 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 de FsRtlAreThereCurrentFileLocks, FsRtlCopyReady 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 siguientes valores:

Valor Significado
FSRTL_FLAG2_DO_MODIFIED_WRITE Consulte los detalles siguientes a esta tabla.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Si se establece esta marca, el Administrador de caché vaciará y purgará la asignación 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 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 FsContext2 miembro del objeto de archivo para la secuencia de archivos de la siguiente manera:

  • Si el FsContext2 miembro 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 FsContext2 miembro 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 FsContext2 miembro 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 lo establece la FsRtlSetupAdvancedHeader o macro 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 recurso 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 debe asignarse 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 debe asignarse 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 de AllocationSize, FileSizey los miembros ValidDataLength, vea CcInitializeCacheMap.

FileSize

Tamaño de archivo del flujo de archivos.

ValidDataLength

Longitud de datos válida del flujo de archivos.

Observaciones

Los sistemas de archivos deben establecer el FsContext miembro 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 de apertura 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
encabezado de ntifs.h (incluya Ntifs.h, Fltkernel.h)

Consulte también

ccInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx