estrutura FSRTL_COMMON_FCB_HEADER (ntifs.h)

Não use a estrutura FSRTL_COMMON_FCB_HEADER fora da estrutura FSRTL_ADVANCED_FCB_HEADER . A estrutura FSRTL_COMMON_FCB_HEADER contém informações de contexto que um sistema de arquivos mantém sobre um arquivo, diretório, volume ou fluxo de dados alternativo.

Sintaxe

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;

Membros

NodeTypeCode

Reservado para uso do sistema.

NodeByteSize

Reservado para uso do sistema.

Flags

Máscara de bits de sinalizadores que indicam suporte para vários recursos. Esse membro deve ser uma combinação OR bit a bit de um ou mais dos seguintes valores:

Valor Significado
FSRTL_FLAG_FILE_MODIFIED Reservado para uso do sistema.
FSRTL_FLAG_FILE_LENGTH_CHANGED Reservado para uso do sistema.
FSRTL_FLAG_LIMIT_MODIFIED_PAGES Reservado para uso do sistema. Os drivers do sistema de arquivos (exceto para drivers de filtro) que devem definir ou limpar um limite de dados modificados para um arquivo devem chamar CcSetDirtyPageThreshold.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_EX Reservado para uso do sistema.
FSRTL_FLAG_ACQUIRE_MAIN_RSRC_SH Reservado para uso do sistema.
FSRTL_FLAG_USER_MAPPED_FILE O Gerenciador de Cache define esse sinalizador para indicar que uma exibição é mapeada para um arquivo.
FSRTL_FLAG_ADVANCED_HEADER Esse sinalizador indica que o sistema de arquivos está usando FSRTL_ADVANCED_FCB_HEADER em vez de FSRTL_COMMON_FCB_HEADER em suas estruturas de FCB (bloco de controle de arquivo). Esse sinalizador é necessário porque o uso da estrutura FSRTL_COMMON_FCB_HEADER fora da estrutura FSRTL_ADVANCED_FCB_HEADER foi preterido.
FSRTL_FLAG_EOF_ADVANCE_ACTIVE Reservado para uso do sistema.

IsFastIoPossible

Esse membro deve ser um dos seguintes valores:

Valor Significado
FastIoIsPossible E/S rápida é possível.
FastIoIsQuestionable Existe um bloqueio de intervalo de bytes exclusivo para o arquivo. O chamador deve chamar a rotina FastIoCheckIfPossible do sistema de arquivos.
FastIoIsNotPossible O FCB para o arquivo é inválido ou existe um bloqueio oportunista (também chamado de "oplock") para o arquivo.

Para obter mais informações sobre esses valores, consulte as entradas de referência para FsRtlAreThereCurrentFileLocks, FsRtlCopyRead e FsRtlCopyWrite.

Flags2

Máscara de bits de sinalizadores que o sistema de arquivos define para indicar suporte para vários recursos. Esse membro deve ser um ou mais dos seguintes valores:

Valor Significado
FSRTL_FLAG2_DO_MODIFIED_WRITE Veja os detalhes após esta tabela.
FSRTL_FLAG2_PURGE_WHEN_MAPPED Se esse sinalizador estiver definido, o Gerenciador de Cache liberará e limpará o mapa de cache quando um usuário mapear um arquivo pela primeira vez.
FSRTL_FLAG2_SUPPORTS_FILTER_CONTEXTS Esse sinalizador indica que o sistema de arquivos está usando FSRTL_ADVANCED_FCB_HEADER em vez de FSRTL_COMMON_FCB_HEADER em suas estruturas FCB. Esse sinalizador é necessário porque o uso da estrutura FSRTL_COMMON_FCB_HEADER fora da estrutura FSRTL_ADVANCED_FCB_HEADER foi preterido.
FSRTL_FLAG2_IS_PAGING_FILE Se definido, esse cabeçalho FCB será associado a um arquivo de página.

O sinalizador FSRTL_FLAG2_DO_MODIFIED_WRITE é usado junto com o membro FsContext2 do objeto de arquivo para o fluxo de arquivos da seguinte maneira:

  • Se o membro FsContext2 do objeto de arquivo não for NULL, o fluxo de arquivos representará uma instância aberta de um arquivo ou um diretório e o valor desse sinalizador será ignorado pelo sistema operacional.

  • Se o membro FsContext2 do objeto de arquivo for NULL e esse sinalizador não estiver definido, o objeto de arquivo será um objeto de arquivo de fluxo e o fluxo será um fluxo MNW (modificado sem gravação).

  • Se o membro FsContext2 do objeto de arquivo for NULL e esse sinalizador for definido, o objeto de arquivo será um objeto de arquivo de fluxo e o fluxo será gravável.

Reserved

Reservado para uso do sistema. Os drivers devem definir esse campo de bits como zero.

Version

Reservado para uso do sistema. Esse campo de bits é definido pela macro FsRtlSetupAdvancedHeader ou FsRtlSetupAdvancedHeaderEx . A partir do Windows Vista, o valor desse campo de bits é FSRTL_FCB_HEADER_V1 ou superior; caso contrário, o valor será FSRTL_FCB_HEADER_V0. Consulte FSRTL_ADVANCED_FCB_HEADER para obter mais informações.

Resource

Ponteiro para uma variável de recurso inicializada, para a qual o sistema de arquivos fornece o armazenamento que será usado para sincronizar o acesso de E/S ao FCB. A variável de recurso deve ser alocada do pool nãopagado.

Os drivers de filtro devem tratar esse membro como opaco.

PagingIoResource

Ponteiro para uma variável de recurso adicional, para a qual o sistema de arquivos fornece o armazenamento que será usado para sincronizar o acesso de E/S de paginação ao FCB. A variável de recurso deve ser alocada do pool nãopagado.

Os drivers de filtro devem tratar esse membro como opaco.

AllocationSize

Tamanho da alocação para o fluxo de arquivos.

Para obter mais informações sobre os membros AllocationSize, FileSize e ValidDataLength , consulte CcInitializeCacheMap.

FileSize

Tamanho do arquivo do fluxo de arquivos.

ValidDataLength

Comprimento de dados válido do fluxo de arquivos.

Comentários

Os sistemas de arquivos devem definir o membro FsContext de cada objeto de arquivo para apontar para uma estrutura FSRTL_ADVANCED_FCB_HEADER . Essa estrutura pode ser inserida dentro de uma estrutura de objeto de contexto de fluxo específica do sistema de arquivos (o restante dessa estrutura é específico do sistema de arquivos). Normalmente, a estrutura FSRTL_ADVANCED_FCB_HEADER é um FCB (bloco de controle de arquivo). No entanto, em alguns sistemas de arquivos que dão suporte a vários fluxos de dados, como o NTFS, é um SCB (bloco de controle de fluxo).

Para dar suporte ao gerenciador de filtros e aos contextos de filtro, os sistemas de arquivos devem usar a estrutura FSRTL_ADVANCED_FCB_HEADER em seus objetos de contexto de fluxo. Todos os sistemas de arquivos da Microsoft usam essa estrutura e todos os desenvolvedores de sistema de arquivos de terceiros também devem fazer isso. FCBs e SCBs para todas as classes de solicitações abertas, incluindo solicitações de abertura de volume, devem incluir essa estrutura.

Se o arquivo for usado como um arquivo de paginação, a estrutura FSRTL_ADVANCED_FCB_HEADER deverá ser alocada do pool nãopagado. Caso contrário, ele poderá ser alocado do pool paginado ou nãopagado.

Requisitos

Requisito Valor
Cabeçalho ntifs.h (include Ntifs.h, Fltkernel.h)

Confira também

CcInitializeCacheMap

FSRTL_ADVANCED_FCB_HEADER

FSRTL_PER_STREAM_CONTEXT

FsRtlAreThereCurrentFileLocks

FsRtlCopyRead

FsRtlCopyWrite

FsRtlSetupAdvancedHeader

FsRtlSetupAdvancedHeaderEx