Compartilhar via


estrutura FLT_TAG_DATA_BUFFER (fltkernel.h)

A estrutura FLT_TAG_DATA_BUFFER contém informações sobre uma marca de ponto de nova análise.

Sintaxe

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;

Membros

FileTag

Marca que identifica exclusivamente o ponto de nova análise. Pode ser um dos valores de IO_REPARSE_TAG_XXX definidos pela Microsoft definidos em ntifs.h ou um valor definido por ISV.

TagDataLength

Tamanho, em bytes, dos dados de nova análise apontados pelo membro do DataBuffer .

UnparsedNameLength

Comprimento, em bytes, da parte nãoparsada do nome do arquivo apontado pelo membro FileName do objeto de arquivo associado. Para obter mais informações sobre o membro FileName , consulte FILE_OBJECT.

SymbolicLinkReparseBuffer

Quando FileTag for IO_REPARSE_TAG_SYMLINK, você poderá usar essa estrutura para interpretar o conteúdo.

SymbolicLinkReparseBuffer.SubstituteNameOffset

Deslocamento, em bytes, da cadeia de caracteres de nome substituto na matriz PathBuffer . Observe que esse deslocamento deve ser dividido por sizeof(WCHAR) para obter o índice da matriz.

SymbolicLinkReparseBuffer.SubstituteNameLength

Comprimento, em bytes, da cadeia de caracteres de nome substituto. Se essa cadeia de caracteres for NULL_terminated, SubstituteNameLength não incluirá espaço para o terminador UNICODE_NULL.

SymbolicLinkReparseBuffer.PrintNameOffset

Deslocamento, em bytes, da cadeia de caracteres de nome de impressão na matriz PathBuffer . Observe que esse deslocamento deve ser dividido por sizeof(WCHAR) para obter o índice da matriz.

SymbolicLinkReparseBuffer.PrintNameLength

Comprimento, em bytes, da cadeia de caracteres de nome de impressão. Se essa cadeia de caracteres for NULL_terminated, PrintNameLength não incluirá espaço para o terminador UNICODE_NULL.

SymbolicLinkReparseBuffer.Flags

Indica se o link simbólico é absoluto ou relativo. Se Flags contiver SYMLINK_FLAG_RELATIVE, o link simbólico contido em PathBuffer (no deslocamento SubstituteNameOffset) será processado como um link relativo; caso contrário, ele é processado como um link absoluto.

SymbolicLinkReparseBuffer.PathBuffer[1]

Primeiro caractere da cadeia de caracteres de caminho. Esse caractere é seguido na memória pelo restante da cadeia de caracteres. A cadeia de caracteres de caminho contém a cadeia de caracteres de nome substituto e a cadeia de caracteres de nome de impressão. O nome substituto e as cadeias de caracteres de nome de impressão podem aparecer em qualquer ordem no PathBuffer. Para localizar o nome substituto e as cadeias de caracteres de nome de impressão no PathBuffer, use os membros SubstituteNameOffset, SubstituteNameLength, PrintNameOffset e PrintNameLength .

MountPointReparseBuffer

Quando FileTag é IO_REPARSE_TAG_MOUNT_POINT, você pode usar essa estrutura para interpretar o conteúdo.

MountPointReparseBuffer.SubstituteNameOffset

Deslocamento, em bytes, da cadeia de caracteres de nome substituto na matriz PathBuffer . Observe que esse deslocamento deve ser dividido por sizeof(WCHAR) para obter o índice da matriz.

MountPointReparseBuffer.SubstituteNameLength

Comprimento, em bytes, da cadeia de caracteres de nome substituto. Se essa cadeia de caracteres for NULL_terminated, SubstituteNameLength não incluirá espaço para o terminador UNICODE_NULL.

MountPointReparseBuffer.PrintNameOffset

Deslocamento, em bytes, da cadeia de caracteres de nome de impressão na matriz PathBuffer . Observe que esse deslocamento deve ser dividido por sizeof(WCHAR) para obter o índice da matriz.

MountPointReparseBuffer.PrintNameLength

Comprimento, em bytes, da cadeia de caracteres de nome de impressão. Se essa cadeia de caracteres for NULL_terminated, PrintNameLength não incluirá espaço para o terminador UNICODE_NULL.

MountPointReparseBuffer.PathBuffer[1]

Primeiro caractere da cadeia de caracteres de caminho. Esse caractere é seguido na memória pelo restante da cadeia de caracteres. A cadeia de caracteres de caminho contém a cadeia de caracteres de nome substituto e a cadeia de caracteres de nome de impressão. O nome substituto e as cadeias de caracteres de nome de impressão podem aparecer em qualquer ordem no PathBuffer. Para localizar o nome substituto e as cadeias de caracteres de nome de impressão no PathBuffer, use os membros SubstituteNameOffset, SubstituteNameLength, PrintNameOffset e PrintNameLength .

GenericReparseBuffer

Você pode usar essa estrutura para interpretar o conteúdo de qualquer marca IO_REPARSE_TAG_XXX definida pela Microsoft.

GenericReparseBuffer.DataBuffer[1]

Ponteiro para um buffer que contém dados definidos pelo usuário para o ponto de nova análise.

GenericGUIDReparseBuffer

Você pode usar essa estrutura para interpretar o conteúdo de qualquer marca IO_REPARSE_TAG_XXX .

GenericGUIDReparseBuffer.TagGuid

GUID (identificador global exclusivo) que identifica o tipo de ponto de nova análise. Se FileTag não for uma marca da Microsoft, esse membro não poderá ser NULL.

GenericGUIDReparseBuffer.DataBuffer[1]

Ponteiro para um buffer que contém dados definidos pelo usuário para o ponto de nova análise.

Comentários

Um minifiltro pode usar a estrutura FLT_TAG_DATA_BUFFER para armazenar informações sobre uma marca de ponto de nova análise.

Na união, você pode usar a estrutura GenericGUIDReparseBuffer para interpretar o conteúdo de qualquer marca IO_REPARSE_TAG_XXX ou, opcionalmente, usar uma das outras estruturas dentro da união da seguinte maneira:

  • Use a estrutura GenericReparseBuffer para qualquer marca IO_REPARSE_TAG_XXX definida pela Microsoft.

  • Use a estrutura SymbolicLinkReparseBuffer quando FileTag for IO_REPARSE_TAG_SYMLINK.

  • Use a estrutura MountPointReparseBuffer quando FileTag for IO_REPARSE_TAG_MOUNT_POINT.

Um ponteiro para uma estrutura FLT_TAG_DATA_BUFFER que contém dados de marca de ponto de nova análise para uma operação é armazenado no membro TagData da estrutura FLT_CALLBACK_DATA da operação.

A macro FLT_TAG_DATA_BUFFER_HEADER_SIZE retorna o tamanho da parte fixa da estrutura FLT_TAG_DATA_BUFFER.

Requisitos

Requisito Valor
Cabeçalho fltkernel.h (inclua FltKernel.h)

Confira também

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile