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
- 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.
\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.
\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.
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
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe