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 des indicateurs qui indiquent quels composants de nom 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 trouvé présent dans la chaîne. Ces valeurs peuvent être combinées à l’aide de l’opérateur OR.
Drapeau | Composant |
---|---|
FLTFL_FILE_NAME_PARSED_FINAL_COMPONENT | finalComponent |
FLTFL_FILE_NAME_PARSED_EXTENSION | d’extension |
FLTFL_FILE_NAME_PARSED_STREAM | Stream |
FLTFL_FILE_NAME_PARSED_PARENT_DIR | ParentDir |
Format
Format des informations de nom stockées dans le Nom membre. Ce membre peut être l’une des valeurs suivantes. (Pour obtenir une explication de ces formats, consultez la section Remarques suivante.)
Valeur | Signification |
---|---|
FLT_FILE_NAME_NORMALIZED | Le Nom membre contient le nom normalisé du fichier. |
FLT_FILE_NAME_OPENED | Le Nom membre 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 Nom membre contient le nom court (8.3) du fichier. Le nom court d’un fichier n’inclut pas le nom du volume, le chemin d’accès au 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 de nom de pour 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.Length sur 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 du 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 nom 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 traversée pour l’intégralité du chemin d’accès. (Pour plus d’informations, consultez FltGetFileNameInformation.)
- Le nom du volume est le nom de l’objet d’appareil nonpersistent du volume (par exemple, « \Device\HarddiskVolume1 »).
- Tous les noms courts sont étendus aux noms longs équivalents.
- Les chaînes « :$DATA » ou « ::$DATA » de fin 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 pour un fichier est le nom utilisé lors de l’ouverture du fichier. Comme le nom normalisé, il contient le chemin d’accès complet du répertoire pour le fichier, y compris le nom du volume. Il diffère du nom normalisé de la manière suivante :
- Le chemin d’accès au répertoire du fichier peut contenir des noms courts ainsi que des noms longs.
- Les chaînes « :$DATA » et « ::$DATA » de fin 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 de distribution de création (« pré-création »). 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, FltGetFileNameInformationUnsafeou FltGetDestinationFileNameInformation. Ces routines retournent un pointeur vers une structure FLT_FILE_NAME_INFORMATION appartenant au Gestionnaire de filtres partagée par tous les mini-filtres.
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 de l'd’extension, Stream, FinalComponent, ParentDiret NamesParsed membres de cette structure.
Les minifilters sont chargés d’appeler FltReleaseFileNameInformation pour libérer la structure FLT_FILE_NAME_INFORMATION lorsqu’elle n’est plus nécessaire.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | fltkernel.h (include Fltkernel.h) |
Voir aussi
FltGetDestinationFileNameInformation
FltGetFileNameInformationUnsafe