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
Bitmask de sinalizadores que indicam quais componentes de nome foram analisados da cadeia de caracteres Name por FltParseFileNameInformation. Observe que, ao analisar a cadeia de caracteres Name , FltParseFileNameInformation define esse sinalizador para cada componente, independentemente de o componente estar presente na cadeia de caracteres. Esses valores podem ser combinados usando o operador OR.
Sinalizador | Componente |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | 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 Name . Esse membro pode ser um dos valores a seguir. (Para obter uma explicação desses formatos, consulte a seção Comentários a seguir.)
Valor | Significado |
---|---|
FLT_FILE_NAME_NORMALIZED | O membro Name contém o nome normalizado para o 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 membro Name 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 Format .
Volume
UNICODE_STRING estrutura que contém o nome do volume analisado da cadeia de caracteres Name . Se Format for FLT_FILE_NAME_SHORT, Volume.Length será zero.
Share
UNICODE_STRING estrutura que contém o nome do compartilhamento de rede analisado da cadeia de caracteres Name para um arquivo remoto. Se Format for FLT_FILE_NAME_SHORT, Share.Length será zero.
Extension
UNICODE_STRING estrutura que contém a extensão analisada da cadeia de caracteres Name . 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 Name . Se nenhum nome de fluxo for encontrado ou se Format for FLT_FILE_NAME_SHORT, FltParseFileNameInformation definiráStream. Comprimento até zero.
FinalComponent
UNICODE_STRING estrutura que contém o componente de nome final analisado da cadeia de caracteres Name . 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 Name por FltParseFileNameInformation. Se nenhum nome de diretório pai for encontrado ou se Format for FLT_FILE_NAME_SHORT, FltParseFileNameInformation definirá ParentDir.Length como zero.
Comentários
O membro Name contém um dos seguintes:
- O nome normalizado para o arquivo
- O nome aberto para o arquivo
- O nome curto do arquivo
- Ele contém o caminho completo do diretório 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 de 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 create dispatch ("pre-create"). 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 nome 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 de UNICODE_STRING em uma estrutura FLT_FILE_NAME_INFORMATION compartilham um único buffer.
Para analisar o conteúdo da cadeia de caracteres Name , chame FltParseFileNameInformation. Essa rotina define os valores dos membros Extension, Stream, FinalComponent, ParentDir e NamesParsed dessa estrutura.
Os minifiltros são responsáveis por chamar FltReleaseFileNameInformation para liberar a estrutura FLT_FILE_NAME_INFORMATION quando ela não for mais necessária.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | fltkernel.h (inclua Fltkernel.h) |
Confira também
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe