Share via


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
Un nombre de archivo se considera normalizado si se cumplen todas las siguientes condiciones:
  • 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.
A continuación se muestra un ejemplo de un nombre de archivo normalizado para un archivo local:
\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.
A continuación se muestra un ejemplo de un nombre de archivo abierto para un archivo local:
\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.

Nota No modifique el contenido de las estructuras de FLT_FILE_NAME_INFORMATION, ya que el Administrador de filtros almacena en caché estas estructuras para que todos los minifiltros puedan usarlos. Si el minifiltro debe modificar esta información de alguna manera, primero debe copiar la información en otro búfer.
 
Los sistemas de archivos, como NTFS y FAT, usan una caché de túnel por volumen para conservar brevemente los nombres de archivo y otros metadatos de los archivos cuyo nombre se va a cambiar, vincular o eliminar. Esta tunelización de nombres de archivo puede hacer que el componente final en la información de nombre de archivo normalizada devuelta por una llamada de preoperación a FltGetFileNameInformation, FltGetFileNameInformation o FltGetDestinationFileNameInformation se invalide. Si un minifiltro recupera información de nombre de archivo normalizada en la rutina de devolución de llamada de preoperación (PFLT_PRE_OPERATION_CALLBACK) para una operación de creación, vinculación o cambio de nombre, debe llamar a FltGetTunneledName desde su rutina de devolución de llamada postoperación (PFLT_POST_OPERATION_CALLBACK) para recuperar la información correcta del nombre de archivo para el archivo.

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

FLT_FILE_NAME_OPTIONS

FltGetDestinationFileNameInformation

FltGetFileNameInformation

FltGetFileNameInformationUnsafe

FltGetTunneledName

FltParseFileName

FltParseFileNameInformation

FltReferenceFileNameInformation

FltReleaseFileNameInformation

PFLT_POST_OPERATION_CALLBACK

PFLT_PRE_OPERATION_CALLBACK

UNICODE_STRING