structure FLT_TAG_DATA_BUFFER (fltkernel.h)
La structure FLT_TAG_DATA_BUFFER contient des informations sur une balise de point d’analyse.
Syntaxe
typedef struct _FLT_TAG_DATA_BUFFER {
ULONG FileTag;
USHORT TagDataLength;
USHORT UnparsedNameLength;
union {
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
ULONG Flags;
WCHAR PathBuffer[1];
} SymbolicLinkReparseBuffer;
struct {
USHORT SubstituteNameOffset;
USHORT SubstituteNameLength;
USHORT PrintNameOffset;
USHORT PrintNameLength;
WCHAR PathBuffer[1];
} MountPointReparseBuffer;
struct {
UCHAR DataBuffer[1];
} GenericReparseBuffer;
struct {
GUID TagGuid;
UCHAR DataBuffer[1];
} GenericGUIDReparseBuffer;
};
} FLT_TAG_DATA_BUFFER, *PFLT_TAG_DATA_BUFFER;
Membres
FileTag
Balise qui identifie de manière unique le point d’analyse. Il peut s’agir de l’une des valeurs IO_REPARSE_TAG_XXX définies par Microsoft définies dans ntifs.h ou d’une valeur définie par un éditeur de logiciels indépendants.
TagDataLength
Taille, en octets, des données d’analyse pointées par le membre DataBuffer .
UnparsedNameLength
Longueur, en octets, de la partie non décrite du nom de fichier pointée par le membre FileName de l’objet fichier associé. Pour plus d’informations sur le membre FileName , consultez FILE_OBJECT.
SymbolicLinkReparseBuffer
Lorsque FileTag est IO_REPARSE_TAG_SYMLINK, vous pouvez utiliser cette structure pour interpréter la charge utile.
SymbolicLinkReparseBuffer.SubstituteNameOffset
Décalage, en octets, de la chaîne de nom de substitution dans le tableau PathBuffer . Notez que ce décalage doit être divisé par sizeof(WCHAR) pour obtenir l’index du tableau.
SymbolicLinkReparseBuffer.SubstituteNameLength
Longueur, en octets, de la chaîne de nom de remplacement. Si cette chaîne est NULL_terminated, SubstituteNameLength n’inclut pas d’espace pour le UNICODE_NULL de fin.
SymbolicLinkReparseBuffer.PrintNameOffset
Décalage, en octets, de la chaîne de nom d’impression dans le tableau PathBuffer . Notez que ce décalage doit être divisé par sizeof(WCHAR) pour obtenir l’index du tableau.
SymbolicLinkReparseBuffer.PrintNameLength
Longueur, en octets, de la chaîne de nom d’impression. Si cette chaîne est NULL_terminated, PrintNameLength n’inclut pas d’espace pour la terminaison UNICODE_NULL.
SymbolicLinkReparseBuffer.Flags
Indique si le lien symbolique est absolu ou relatif. Si Flags contient SYMLINK_FLAG_RELATIVE, le lien symbolique contenu dans PathBuffer (au décalage SubstituteNameOffset) est traité comme un lien relatif ; sinon, il est traité comme un lien absolu.
SymbolicLinkReparseBuffer.PathBuffer[1]
Premier caractère de la chaîne de chemin d’accès. Ce caractère est suivi en mémoire par le reste de la chaîne. La chaîne de chemin d’accès contient la chaîne de nom de substitution et la chaîne de nom d’impression. Les chaînes de nom de remplacement et de nom d’impression peuvent apparaître dans n’importe quel ordre dans le PathBuffer. Pour rechercher les chaînes de nom de substitution et de nom d’impression dans pathBuffer, utilisez les membres SubstituteNameOffset, SubstituteNameLength, PrintNameOffset et PrintNameLength .
MountPointReparseBuffer
Lorsque FileTag est IO_REPARSE_TAG_MOUNT_POINT, vous pouvez utiliser cette structure pour interpréter la charge utile.
MountPointReparseBuffer.SubstituteNameOffset
Décalage, en octets, de la chaîne de nom de substitution dans le tableau PathBuffer . Notez que ce décalage doit être divisé par sizeof(WCHAR) pour obtenir l’index du tableau.
MountPointReparseBuffer.SubstituteNameLength
Longueur, en octets, de la chaîne de nom de remplacement. Si cette chaîne est NULL_terminated, SubstituteNameLength n’inclut pas d’espace pour le UNICODE_NULL de fin.
MountPointReparseBuffer.PrintNameOffset
Décalage, en octets, de la chaîne de nom d’impression dans le tableau PathBuffer . Notez que ce décalage doit être divisé par sizeof(WCHAR) pour obtenir l’index du tableau.
MountPointReparseBuffer.PrintNameLength
Longueur, en octets, de la chaîne de nom d’impression. Si cette chaîne est NULL_terminated, PrintNameLength n’inclut pas d’espace pour la terminaison UNICODE_NULL.
MountPointReparseBuffer.PathBuffer[1]
Premier caractère de la chaîne de chemin d’accès. Ce caractère est suivi en mémoire par le reste de la chaîne. La chaîne de chemin d’accès contient la chaîne de nom de substitution et la chaîne de nom d’impression. Les chaînes de nom de remplacement et de nom d’impression peuvent apparaître dans n’importe quel ordre dans le PathBuffer. Pour rechercher les chaînes de nom de substitution et de nom d’impression dans pathBuffer, utilisez les membres SubstituteNameOffset, SubstituteNameLength, PrintNameOffset et PrintNameLength .
GenericReparseBuffer
Vous pouvez utiliser cette structure pour interpréter la charge utile pour n’importe quelle balise IO_REPARSE_TAG_XXX définie par Microsoft.
GenericReparseBuffer.DataBuffer[1]
Pointeur vers une mémoire tampon qui contient des données définies par l’utilisateur pour le point d’analyse.
GenericGUIDReparseBuffer
Vous pouvez utiliser cette structure pour interpréter la charge utile pour n’importe quelle balise IO_REPARSE_TAG_XXX .
GenericGUIDReparseBuffer.TagGuid
Identificateur global unique (GUID) qui identifie le type de point d’analyse. Si FileTag n’est pas une balise Microsoft, ce membre ne peut pas avoir la valeur NULL.
GenericGUIDReparseBuffer.DataBuffer[1]
Pointeur vers une mémoire tampon qui contient des données définies par l’utilisateur pour le point d’analyse.
Remarques
Un minifiltre peut utiliser la structure FLT_TAG_DATA_BUFFER pour stocker des informations sur une balise de point d’analyse.
À partir de l’union, vous pouvez utiliser la structure GenericGUIDReparseBuffer pour interpréter la charge utile pour n’importe quelle balise IO_REPARSE_TAG_XXX , ou éventuellement utiliser l’une des autres structures au sein de l’union comme suit :
Utilisez la structure GenericReparseBuffer pour toute balise IO_REPARSE_TAG_XXX définie par Microsoft.
Utilisez la structure SymbolicLinkReparseBuffer lorsque FileTag est IO_REPARSE_TAG_SYMLINK.
Utilisez la structure MountPointReparseBuffer lorsque FileTag est IO_REPARSE_TAG_MOUNT_POINT.
Un pointeur vers une structure de FLT_TAG_DATA_BUFFER qui contient des données de balise de point d’analyse pour une opération est stocké dans le membre TagData de la structure FLT_CALLBACK_DATA pour l’opération.
La macro FLT_TAG_DATA_BUFFER_HEADER_SIZE retourne la taille de la partie fixe de la structure FLT_TAG_DATA_BUFFER.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | fltkernel.h (inclure FltKernel.h) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour