структура FLT_TAG_DATA_BUFFER (fltkernel.h)

Структура FLT_TAG_DATA_BUFFER содержит сведения о теге точки повторного преобразования.

Синтаксис

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;

Члены

FileTag

Тег, который однозначно идентифицирует точку повторного измерения. Может быть одним из определенных корпорацией Майкрософт значений IO_REPARSE_TAG_XXX,определенных в ntifs.h, или значением, определяемым isV.

TagDataLength

Размер в байтах данных повторного анализа, на которые указывает элемент DataBuffer .

UnparsedNameLength

Длина в байтах непараемой части имени файла, на которую указывает элемент FileName связанного объекта файла. Дополнительные сведения об элементе FileName см. в разделе FILE_OBJECT.

SymbolicLinkReparseBuffer

Если FileTag IO_REPARSE_TAG_SYMLINK, эту структуру можно использовать для интерпретации полезных данных.

SymbolicLinkReparseBuffer.SubstituteNameOffset

Смещение в байтах строки замещающего имени в массиве PathBuffer . Обратите внимание, что для получения индекса массива это смещение должно быть разделено на sizeof(WCHAR).

SymbolicLinkReparseBuffer.SubstituteNameLength

Длина строки замещающего имени в байтах. Если эта строка является NULL_terminated, функция SubstituteNameLength не включает пробел для признака конца UNICODE_NULL.

SymbolicLinkReparseBuffer.PrintNameOffset

Смещение строки имени печати в байтах в массиве PathBuffer . Обратите внимание, что для получения индекса массива это смещение должно быть разделено на sizeof(WCHAR).

SymbolicLinkReparseBuffer.PrintNameLength

Длина строки имени печати в байтах. Если эта строка NULL_terminated, PrintNameLength не включает пробел для признака конца UNICODE_NULL.

SymbolicLinkReparseBuffer.Flags

Указывает, является ли символьная ссылка абсолютной или относительной. Если flags содержит SYMLINK_FLAG_RELATIVE, символьная ссылка, содержащаяся в PathBuffer (в смещении SubstituteNameOffset), обрабатывается как относительная ссылка; в противном случае он обрабатывается как абсолютная ссылка.

SymbolicLinkReparseBuffer.PathBuffer[1]

Первый символ строки пути. За этим символом в памяти следует остаток строки. Строка пути содержит строку замещающего имени и строку имени печати. Строки имени замены и имени печати могут отображаться в PathBuffer в любом порядке. Чтобы найти замещаемое имя и строки имени печати в PathBuffer, используйте элементы SubstituteNameOffset, SubstituteNameLength, PrintNameOffset и PrintNameLength .

MountPointReparseBuffer

Если FileTag IO_REPARSE_TAG_MOUNT_POINT, эту структуру можно использовать для интерпретации полезных данных.

MountPointReparseBuffer.SubstituteNameOffset

Смещение в байтах строки замещающего имени в массиве PathBuffer . Обратите внимание, что для получения индекса массива это смещение должно быть разделено на sizeof(WCHAR).

MountPointReparseBuffer.SubstituteNameLength

Длина строки замещающего имени в байтах. Если эта строка является NULL_terminated, функция SubstituteNameLength не включает пробел для признака конца UNICODE_NULL.

MountPointReparseBuffer.PrintNameOffset

Смещение строки имени печати в байтах в массиве PathBuffer . Обратите внимание, что для получения индекса массива это смещение должно быть разделено на sizeof(WCHAR).

MountPointReparseBuffer.PrintNameLength

Длина строки имени печати в байтах. Если эта строка NULL_terminated, PrintNameLength не включает пробел для признака конца UNICODE_NULL.

MountPointReparseBuffer.PathBuffer[1]

Первый символ строки пути. За этим символом в памяти следует остаток строки. Строка пути содержит строку замещающего имени и строку имени печати. Строки имени замены и имени печати могут отображаться в PathBuffer в любом порядке. Чтобы найти замещаемое имя и строки имени печати в PathBuffer, используйте элементы SubstituteNameOffset, SubstituteNameLength, PrintNameOffset и PrintNameLength .

GenericReparseBuffer

Эту структуру можно использовать для интерпретации полезных данных для любого тега IO_REPARSE_TAG_XXX, определенного Корпорацией Майкрософт.

GenericReparseBuffer.DataBuffer[1]

Указатель на буфер, содержащий определяемые пользователем данные для точки повторного анализа.

GenericGUIDReparseBuffer

Эту структуру можно использовать для интерпретации полезных данных для любого тега IO_REPARSE_TAG_XXX .

GenericGUIDReparseBuffer.TagGuid

Глобальный уникальный идентификатор (GUID), определяющий тип точки повторного преобразования. Если FileTag не является тегом Майкрософт, этот элемент не может иметь значение NULL.

GenericGUIDReparseBuffer.DataBuffer[1]

Указатель на буфер, содержащий определяемые пользователем данные для точки повторного анализа.

Комментарии

Минифильтр может использовать структуру FLT_TAG_DATA_BUFFER для хранения сведений о теге точки повторного анализа.

В объединении можно использовать структуру GenericGUIDReparseBuffer , чтобы интерпретировать полезные данные для любого тега IO_REPARSE_TAG_XXX, или при необходимости использовать одну из других структур в объединении следующим образом:

  • Используйте структуру GenericReparseBuffer для любого тега IO_REPARSE_TAG_XXX, определенного Корпорацией Майкрософт.

  • Используйте структуру SymbolicLinkReparseBuffer , если fileTag IO_REPARSE_TAG_SYMLINK.

  • Используйте структуру MountPointReparseBuffer , если fileTag IO_REPARSE_TAG_MOUNT_POINT.

Указатель на структуру FLT_TAG_DATA_BUFFER, которая содержит данные тега точек повторного анализа для операции, хранится в элементе TagDataструктуры FLT_CALLBACK_DATA для операции.

Макрос FLT_TAG_DATA_BUFFER_HEADER_SIZE возвращает размер фиксированной части структуры FLT_TAG_DATA_BUFFER.

Требования

Требование Значение
Заголовок fltkernel.h (включая FltKernel.h)

См. также раздел

FILE_OBJECT

FLT_CALLBACK_DATA

FltTagFile

FltTagFileEx

FltUntagFile