structure FLT_FILE_NAME_INFORMATION (fltkernel.h)
La structure FLT_FILE_NAME_INFORMATION contient des informations de nom de fichier.
Syntaxe
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;
Membres
Size
Taille, en octets, de la structure FLT_FILE_NAME_INFORMATION.
NamesParsed
Masque de bits d’indicateurs qui indiquent les composants de nom qui ont été analysés à partir de la chaîne Name par FltParseFileNameInformation. Notez que, lors de l’analyse de la chaîne Name , FltParseFileNameInformation définit cet indicateur pour chaque composant, que le composant soit présent dans la chaîne. Ces valeurs peuvent être combinées à l’aide de l’opérateur OR.
Indicateur | Composant |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | FinalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | Extension |
FLTFL_FILE_NAME_PARSED_STREAM | Flux |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Format des informations de nom stockées dans le membre Name . Ce membre peut être l’une des valeurs suivantes. (Pour une explication de ces formats, consultez la section Remarques suivante.)
Valeur | Signification |
---|---|
FLT_FILE_NAME_NORMALIZED | Le membre Name contient le nom normalisé du fichier. |
FLT_FILE_NAME_OPENED | Le membre Name contient le nom utilisé lors de l’ouverture du fichier. Cette chaîne de nom n’est pas normalisée. |
FLT_FILE_NAME_SHORT | Le membre Name contient le nom court (8.3) du fichier. Le nom court d’un fichier n’inclut pas le nom du volume, le chemin du répertoire ou le nom du flux. Cette chaîne de nom n’est pas normalisée. |
Name
UNICODE_STRING structure qui contient la chaîne de nom de fichier, mise en forme comme spécifié par le membre Format .
Volume
UNICODE_STRING structure qui contient le nom du volume analysé à partir de la chaîne Name . Si Format est FLT_FILE_NAME_SHORT, Volume.Length est égal à zéro.
Share
UNICODE_STRING structure qui contient le nom du partage réseau analysé à partir de la chaîne Name d’un fichier distant. Si Format est FLT_FILE_NAME_SHORT, Share.Length est égal à zéro.
Extension
UNICODE_STRING structure qui contient l’extension analysée à partir de la chaîne Name . Si aucune extension n’est trouvée, FltParseFileNameInformation définit Extension.Length sur zéro.
Stream
UNICODE_STRING structure qui contient le nom du flux analysé à partir de la chaîne Name . Si aucun nom de flux n’est trouvé ou si Format est FLT_FILE_NAME_SHORT, FltParseFileNameInformation définit Stream. Longueur à zéro.
FinalComponent
UNICODE_STRING structure qui contient le composant de nom final analysé à partir de la chaîne Name . Si aucun nom de composant final n’est trouvé ou si Format est FLT_FILE_NAME_SHORT, FltParseFileNameInformation définit FinalComponent.Length sur zéro.
ParentDir
UNICODE_STRING structure qui contient le nom de répertoire parent analysé à partir de la chaîne Name par FltParseFileNameInformation. Si aucun nom de répertoire parent n’est trouvé ou si Format est FLT_FILE_NAME_SHORT, FltParseFileNameInformation définit ParentDir.Length sur zéro.
Remarques
Le membre Name contient l’un des éléments suivants :
- Nom normalisé du fichier
- Nom ouvert du fichier
- Nom court du fichier
- Il contient le chemin d’accès complet du répertoire pour le fichier, y compris le nom du volume, sauf si l’utilisateur a ouvert le fichier par ID de fichier, mais n’a pas de privilège de traverse pour l’ensemble du chemin d’accès. (Pour plus d’informations, consultez FltGetFileNameInformation.)
- Le nom du volume est le nom de l’objet d’appareil non persistant du volume (par exemple, « \Device\HarddiskVolume1 »).
- Tous les noms courts sont développés vers les noms longs équivalents.
- Toutes les chaînes de fin « :$DATA » ou « ::$DATA » sont supprimées du nom du flux.
- Tous les points de montage sont résolus.
\Device\HarddiskVolume1\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
Voici un exemple de nom de fichier normalisé pour un fichier distant :
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
Le nom ouvert d’un fichier est le nom utilisé lors de l’ouverture du fichier. Comme le nom normalisé, il contient le chemin complet du répertoire du fichier, y compris le nom du volume. Il diffère du nom normalisé des manières suivantes :
- Le chemin du répertoire du fichier peut contenir des noms courts ainsi que des noms longs.
- Les chaînes de fin « :$DATA » et « ::$DATA » ne sont pas supprimées du nom du flux.
- Les points de montage ne sont pas résolus.
\Device\HarddiskVolume1\Docume~1\MyUser\MYDOCU~1\Test Results.txt:stream1:$DATA
Voici un exemple de nom de fichier ouvert pour un fichier distant :
\Device\LanManRedirector\MyServer\MyShare\Documents and Settings\MyUser\My Documents\Test Results.txt:stream1
Le nom court d’un fichier est le nom court (8.3) du composant final du nom de fichier. Étant donné qu’il est généré lors de l’ouverture du fichier, le nom court n’est pas disponible pour un objet de fichier non ouvert et il n’est pas disponible dans le chemin d’accès create dispatch (« pré-create »). Il n’est pas non plus disponible pour les objets de fichier de flux NTFS. Tous les fichiers ouverts n’ont pas de noms de fichiers courts. Par exemple, sur les partitions NTFS où la génération de nom de fichier court a été désactivée, aucun fichier n’a de noms de fichiers courts.
Voici un exemple de nom court pour un fichier :
TestRe~1.txt
Pour obtenir une structure FLT_FILE_NAME_INFORMATION pour un fichier, appelez FltGetFileNameInformation, FltGetFileNameInformationUnsafe ou FltGetDestinationFileNameInformation. Ces routines retournent un pointeur vers une structure FLT_FILE_NAME_INFORMATION appartenant au Gestionnaire de filtres qui est partagée par tous les minifiltres.
Bien qu’elle contienne de nombreuses structures UNICODE_STRING , la structure FLT_FILE_NAME_INFORMATION n’occupe pas beaucoup d’espace en mémoire, car toutes les structures UNICODE_STRING d’une structure FLT_FILE_NAME_INFORMATION partagent une seule mémoire tampon.
Pour analyser le contenu de la chaîne Name , appelez FltParseFileNameInformation. Cette routine définit les valeurs des membres Extension, Stream, FinalComponent, ParentDir et NamesParsed de cette structure.
Les minifiltres sont chargés d’appeler FltReleaseFileNameInformation pour libérer la structure FLT_FILE_NAME_INFORMATION lorsqu’elle n’est plus nécessaire.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | fltkernel.h (inclure Fltkernel.h) |
Voir aussi
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe