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. Drivers do sistema de arquivos (exceto 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 de FSRTL_COMMON_FCB_HEADER fora da estrutura FSRTL_ADVANCED_FCB_HEADER é 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 |
FastIoIsNotPossible | A 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, FsRtlCopyReade 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 | Confira os detalhes a seguir nesta 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 de FSRTL_COMMON_FCB_HEADER fora da estrutura FSRTL_ADVANCED_FCB_HEADER é 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 FsContext2 membro do objeto de arquivo para o fluxo de arquivos da seguinte maneira:
Se o FsContext2 membro 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 FsContext2 membro 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 (modified-no-write).
Se o FsContext2 membro 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 pelo FsRtlSetupAdvancedHeader ou macro FsRtlSetupAdvancedHeaderEx. A partir do Windows Vista, o valor desse campo de bits é FSRTL_FCB_HEADER_V1 ou maior; 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, FileSizee membros do ValidDataLength, consulte CcInitializeCacheMap.
FileSize
Tamanho do arquivo do fluxo de arquivos.
ValidDataLength
Comprimento de dados válido do fluxo de arquivos.
Observações
Os sistemas de arquivos devem definir o FsContext membro de cada objeto de arquivo para apontar para uma estrutura de 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 a contextos de filtro e gerenciador de filtros, 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 abertas por volume, devem incluir essa estrutura.
Se o arquivo for usado como um arquivo de paginação, a estrutura de FSRTL_ADVANCED_FCB_HEADER deverá ser alocada do pool nãopagado. Caso contrário, ele poderá ser alocado do pool de páginas ou nãopagados.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | ntifs.h (inclua Ntifs.h, Fltkernel.h) |