Partilhar via


estrutura FLT_FILE_NAME_INFORMATION (fltkernel.h)

A estrutura FLT_FILE_NAME_INFORMATION contém informações de nome de arquivo.

Sintaxe

typedef struct _FLT_FILE_NAME_INFORMATION {
  USHORT                     Size;
  FLT_FILE_NAME_PARSED_FLAGS NamesParsed;
  FLT_FILE_NAME_OPTIONS      Format;
  UNICODE_STRING             Name;
  UNICODE_STRING             Volume;
  UNICODE_STRING             Share;
  UNICODE_STRING             Extension;
  UNICODE_STRING             Stream;
  UNICODE_STRING             FinalComponent;
  UNICODE_STRING             ParentDir;
} FLT_FILE_NAME_INFORMATION, *PFLT_FILE_NAME_INFORMATION;

Membros

Size

Tamanho, em bytes, da estrutura FLT_FILE_NAME_INFORMATION.

NamesParsed

Máscara de bits de sinalizadores que indicam quais componentes de nome foram analisados da cadeia de caracteres NameFltParseFileNameInformation. Observe que, ao analisar a cadeia de caracteres Name, FltParseFileNameInformation define esse sinalizador para cada componente, se o componente está presente na cadeia de caracteres. Esses valores podem ser combinados usando o operador OR.

Bandeira Componente
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT FinalComponent
FLTFL_FILE_NAME_PARSED_EXTENSION de extensão
FLTFL_FILE_NAME_PARSED_STREAM Stream
FLTFL_FILE_NAME_PARSED_PARENT_DIR ParentDir

Format

Formato das informações de nome armazenadas no membro nome do. Esse membro pode ser um dos seguintes valores. (Para obter uma explicação desses formatos, consulte a seção Comentários a seguir.)

Valor Significado
FLT_FILE_NAME_NORMALIZED O membro nome do contém o nome normalizado do arquivo.
FLT_FILE_NAME_OPENED O membro Name contém o nome que foi usado quando o arquivo foi aberto. Essa cadeia de caracteres de nome não está normalizada.
FLT_FILE_NAME_SHORT O Name membro contém o nome curto (8.3) do arquivo. O nome curto de um arquivo não inclui o nome do volume, o caminho do diretório ou o nome do fluxo. Essa cadeia de caracteres de nome não está normalizada.

Name

UNICODE_STRING estrutura que contém a cadeia de caracteres de nome de arquivo, formatada conforme especificado pelo membro formatar.

Volume

UNICODE_STRING estrutura que contém o nome do volume analisado da cadeia de caracteres Nome do. Se Formatar for FLT_FILE_NAME_SHORT, Volume.Length será zero.

Share

UNICODE_STRING estrutura que contém o nome de compartilhamento de rede analisado da cadeia de caracteres Nome do para um arquivo remoto. Se Formatar for FLT_FILE_NAME_SHORT, Share.Length será zero.

Extension

UNICODE_STRING estrutura que contém a extensão analisada da cadeia de caracteres nome do. Se nenhuma extensão for encontrada, FltParseFileNameInformation definirá Extension.Length como zero.

Stream

UNICODE_STRING estrutura que contém o nome do fluxo analisado da cadeia de caracteres Nome do. Se nenhum nome de fluxo for encontrado ou se Formatar for FLT_FILE_NAME_SHORT, FltParseFileNameInformation definirá Stream.Length como zero.

FinalComponent

UNICODE_STRING estrutura que contém o componente de nome final analisado da cadeia de caracteres nome do. Se nenhum nome de componente final for encontrado ou se Format for FLT_FILE_NAME_SHORT, FltParseFileNameInformation definirá FinalComponent.Length como zero.

ParentDir

UNICODE_STRING estrutura que contém o nome do diretório pai analisado da cadeia de caracteres nome doFltParseFileNameInformation. Se nenhum nome de diretório pai for encontrado ou se Formatar for FLT_FILE_NAME_SHORT, FltParseFileNameInformation definirá ParentDir.Length como zero.

Observações

O Name membro contém um dos seguintes:

  • O nome normalizado do arquivo
  • O nome aberto para o arquivo
  • O nome curto do arquivo
Um nome de arquivo é considerado normalizado se todos os seguintes forem verdadeiros:
  • Ele contém o caminho de diretório completo para o arquivo, incluindo o nome do volume, a menos que o usuário tenha aberto o arquivo por ID de arquivo, mas não tenha privilégio de passagem para todo o caminho. (Para obter mais informações, consulte FltGetFileNameInformation.)
  • O nome do volume é o nome do objeto de dispositivo não persistente do volume (por exemplo, "\Device\HarddiskVolume1").
  • Todos os nomes curtos são expandidos para os nomes longos equivalentes.
  • Todas as cadeias de caracteres ":$DATA" ou "::$DATA" à direita são removidas do nome do fluxo.
  • Todos os pontos de montagem são resolvidos.
Veja a seguir um exemplo de um nome de arquivo normalizado para um arquivo local:
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

Veja a seguir um exemplo de um nome de arquivo normalizado para um arquivo remoto:

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

O nome aberto para um arquivo é o nome que foi usado quando o arquivo foi aberto. Como o nome normalizado, ele contém o caminho de diretório completo para o arquivo, incluindo o nome do volume. Ela difere do nome normalizado das seguintes maneiras:

  • O caminho do diretório para o arquivo pode conter nomes curtos, bem como nomes longos.
  • As cadeias de caracteres ":$DATA" e "::$DATA" à direita não são removidas do nome do fluxo.
  • Os pontos de montagem não são resolvidos.
Veja a seguir um exemplo de um nome de arquivo aberto para um arquivo local:
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA

Veja a seguir um exemplo de um nome de arquivo aberto para um arquivo remoto:

\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1

O nome curto para um arquivo é o nome curto (8.3) do componente final do nome do arquivo. Como ele é gerado quando o arquivo é aberto, o nome curto não está disponível para um objeto de arquivo não aberto e não está disponível no caminho criar expedição ("pré-criar").. Ele também não está disponível para objetos de arquivo de fluxo NTFS. Nem todos os arquivos abertos têm nomes de arquivo curtos. Por exemplo, em partições NTFS em que a geração de nomes de arquivo curto foi desabilitada, nenhum arquivo tem nomes de arquivo curtos.

Veja a seguir um exemplo de um nome curto para um arquivo:

TestRe~1.txt

Para obter uma estrutura FLT_FILE_NAME_INFORMATION para um arquivo, chame FltGetFileNameInformation, FltGetFileNameInformationUnsafe ou FltGetDestinationFileNameInformation. Essas rotinas retornam um ponteiro para uma estrutura de FLT_FILE_NAME_INFORMATION de propriedade do Gerenciador de Filtros que é compartilhada por todos os minifiltros.

Observação Não modifique o conteúdo de estruturas de FLT_FILE_NAME_INFORMATION, pois essas estruturas são armazenadas em cache pelo Gerenciador de Filtros para que todos os minifiltros possam usá-las. Se o minifiltro precisar modificar essas informações de alguma forma, ele deverá copiar as informações para outro buffer primeiro.
 
Sistemas de arquivos, como NTFS e FAT, usam um cache de túnel por volume para preservar brevemente nomes de arquivo e outros metadados para arquivos que estão sendo renomeados, vinculados ou excluídos. Esse túnel de nome de arquivo pode fazer com que o componente final em informações de nome de arquivo normalizado retornadas por uma chamada de pré-operação para FltGetFileNameInformation, FltGetFileNameInformationUnsafeou FltGetDestinationFileNameInformation seja invalidado. Se um minifiltro recuperar informações de nome de arquivo normalizadas na rotina de retorno de chamada de pré-operação (PFLT_PRE_OPERATION_CALLBACK) para uma operação de criação, vínculo rígido ou renomeação, ele deverá chamar FltGetTunneledName de sua rotina de retorno de chamada de postoperation (PFLT_POST_OPERATION_CALLBACK) para recuperar as informações de nome de arquivo corretas para o arquivo.

Embora contenha várias estruturas UNICODE_STRING, a estrutura FLT_FILE_NAME_INFORMATION não ocupa muito espaço na memória porque todas as estruturas UNICODE_STRING em uma estrutura FLT_FILE_NAME_INFORMATION compartilham um único buffer.

Para analisar o conteúdo da cadeia de caracteres nome do, chame FltParseFileNameInformation. Essa rotina define os valores dos membros de Extensão, Stream, FinalComponent, ParentDire NamesParsed dessa estrutura.

Os minifiltros são responsáveis por chamar FltReleaseFileNameInformation para liberar a estrutura de FLT_FILE_NAME_INFORMATION quando ela não for mais necessária.

Requisitos

Requisito Valor
cabeçalho fltkernel.h (inclua Fltkernel.h)

Consulte também

FLT_FILE_NAME_OPTIONS

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetTunneledName

FltParseFileName

FltParseFileNameInformation

FltReferenceFileNameInformation

FltReleaseFileNameInformation

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

UNICODE_STRING