estructura FLT_FILE_NAME_INFORMATION (fltkernel.h)
La estructura FLT_FILE_NAME_INFORMATION contiene información de nombre de archivo.
Sintaxis
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;
Miembros
Size
Tamaño, en bytes, de la estructura FLT_FILE_NAME_INFORMATION.
NamesParsed
Máscara de bits de marcas que indican qué componentes de nombre se han analizado de la cadena Name por FltParseFileNameInformation. Tenga en cuenta que, al analizar la cadena Name , FltParseFileNameInformation establece esta marca para cada componente, si el componente se encuentra presente en la cadena. Estos valores se pueden combinar mediante el operador OR.
Marca | Componente |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | Extensión |
FLTFL_FILE_NAME_PARSED_STREAM | Stream |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Formato de la información de nombre almacenada en el miembro Name . Este miembro puede ser uno de los siguientes valores. (Para obtener una explicación de estos formatos, vea la siguiente sección Comentarios).
Valor | Significado |
---|---|
FLT_FILE_NAME_NORMALIZED | El miembro Name contiene el nombre normalizado del archivo. |
FLT_FILE_NAME_OPENED | El miembro Name contiene el nombre que se usó cuando se abrió el archivo. Esta cadena de nombre no se normaliza. |
FLT_FILE_NAME_SHORT | El miembro Name contiene el nombre corto (8.3) del archivo. El nombre corto de un archivo no incluye el nombre del volumen, la ruta de acceso del directorio ni el nombre de la secuencia. Esta cadena de nombre no se normaliza. |
Name
UNICODE_STRING estructura que contiene la cadena de nombre de archivo, con el formato especificado por el miembro Format .
Volume
UNICODE_STRING estructura que contiene el nombre del volumen analizado de la cadena Name . Si Format es FLT_FILE_NAME_SHORT, Volume.Length es cero.
Share
UNICODE_STRING estructura que contiene el nombre del recurso compartido de red analizado de la cadena Name para un archivo remoto. Si Format es FLT_FILE_NAME_SHORT, Share.Length es cero.
Extension
UNICODE_STRING estructura que contiene la extensión analizada de la cadena Name . Si no se encuentra ninguna extensión, FltParseFileNameInformation establece Extension.Length en cero.
Stream
UNICODE_STRING estructura que contiene el nombre de secuencia analizado de la cadena Name . Si no se encuentra ningún nombre de secuencia o si format es FLT_FILE_NAME_SHORT, FltParseFileNameInformation establece Stream. Longitud a cero.
FinalComponent
UNICODE_STRING estructura que contiene el componente de nombre final analizado de la cadena Name . Si no se encuentra ningún nombre de componente final o si Format es FLT_FILE_NAME_SHORT, FltParseFileNameInformation establece FinalComponent.Length en cero.
ParentDir
UNICODE_STRING estructura que contiene el nombre del directorio primario analizado de la cadena Name por FltParseFileNameInformation. Si no se encuentra ningún nombre de directorio primario o si Format es FLT_FILE_NAME_SHORT, FltParseFileNameInformation establece ParentDir.Length en cero.
Comentarios
El miembro Name contiene uno de los siguientes elementos:
- Nombre normalizado del archivo
- Nombre abierto del archivo.
- Nombre corto del archivo
- Contiene la ruta de acceso completa del directorio para el archivo, incluido el nombre del volumen, a menos que el usuario abrió el archivo por identificador de archivo, pero no tiene privilegios de recorrido para toda la ruta de acceso. (Para obtener más información, vea FltGetFileNameInformation).
- El nombre del volumen es el nombre del objeto de dispositivo no persistente del volumen (por ejemplo, "\Device\HarddiskVolume1").
- Todos los nombres cortos se expanden a los nombres largos equivalentes.
- Las cadenas ":$DATA" o "::$DATA" finales se quitan del nombre de la secuencia.
- Se resuelven todos los puntos de montaje.
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
A continuación se muestra un ejemplo de un nombre de archivo normalizado para un archivo remoto:
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
El nombre abierto de un archivo es el nombre que se usó cuando se abrió el archivo. Al igual que el nombre normalizado, contiene la ruta de acceso completa del directorio para el archivo, incluido el nombre del volumen. Difiere del nombre normalizado de las siguientes maneras:
- La ruta de acceso del directorio del archivo puede contener nombres cortos, así como nombres largos.
- Las cadenas ":$DATA" y "::$DATA" finales no se quitan del nombre de la secuencia.
- Los puntos de montaje no se resuelven.
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA
A continuación se muestra un ejemplo de un nombre de archivo abierto para un archivo remoto:
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
El nombre corto de un archivo es el nombre corto (8.3) del componente final del nombre de archivo. Dado que se genera cuando se abre el archivo, el nombre corto no está disponible para un objeto de archivo sin abrir y no está disponible en la ruta de acceso create dispatch ("pre-create"). Tampoco está disponible para objetos de archivo de secuencia NTFS. No todos los archivos abiertos tienen nombres de archivo cortos. Por ejemplo, en las particiones NTFS en las que se ha deshabilitado la generación de nombres de archivo cortos, no hay archivos con nombres de archivo cortos.
A continuación se muestra un ejemplo de un nombre corto para un archivo:
TestRe~1.txt
Para obtener una estructura de FLT_FILE_NAME_INFORMATION para un archivo, llame a FltGetFileNameInformation, FltGetFileNameInformationUnsafe o FltGetDestinationFileNameInformation. Estas rutinas devuelven un puntero a una estructura de FLT_FILE_NAME_INFORMATION propiedad de Filter Manager compartida por todos los minifiltros.
Aunque contiene numerosas estructuras de UNICODE_STRING , la estructura de FLT_FILE_NAME_INFORMATION no ocupa mucho espacio en memoria porque todas las estructuras de UNICODE_STRING de una estructura FLT_FILE_NAME_INFORMATION comparten un único búfer.
Para analizar el contenido de la cadena Name , llame a FltParseFileNameInformation. Esta rutina establece los valores de los miembros Extension, Stream, FinalComponent, ParentDir y NamesParsed de esta estructura.
Los minifiltros son responsables de llamar a FltReleaseFileNameInformation para liberar la estructura de FLT_FILE_NAME_INFORMATION cuando ya no se necesite.
Requisitos
Requisito | Valor |
---|---|
Header | fltkernel.h (incluya Fltkernel.h) |
Consulte también
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe