Partager via


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

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile