Поделиться через


структура REPARSE_DATA_BUFFER (ntifs.h)

Структура REPARSE_DATA_BUFFER содержит данные точки повторного анализа для точки повторного анализа Майкрософт. Вместо этого можно использовать REPARSE_DATA_BUFFER_EX . (Сторонние владельцы точек повторного преобразования должны использовать вместо этого структуру REPARSE_GUID_DATA_BUFFER .)

Синтаксис

typedef struct _REPARSE_DATA_BUFFER {
  ULONG  ReparseTag;
  USHORT ReparseDataLength;
  USHORT Reserved;
  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;
  } DUMMYUNIONNAME;
} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;

Члены

ReparseTag

Повторно пропарировать тег точки. Должен быть тегом точки повторного исследования Майкрософт. (См. следующий раздел примечаний .)

ReparseDataLength

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

Reserved

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

DUMMYUNIONNAME

DUMMYUNIONNAME.SymbolicLinkReparseBuffer

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.SubstituteNameOffset

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

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.SubstituteNameLength

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

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PrintNameOffset

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

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PrintNameLength

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

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.Flags

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

DUMMYUNIONNAME.SymbolicLinkReparseBuffer.PathBuffer[1]

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

DUMMYUNIONNAME.MountPointReparseBuffer

DUMMYUNIONNAME.MountPointReparseBuffer.SubstituteNameOffset

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

DUMMYUNIONNAME.MountPointReparseBuffer.SubstituteNameLength

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

DUMMYUNIONNAME.MountPointReparseBuffer.PrintNameOffset

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

DUMMYUNIONNAME.MountPointReparseBuffer.PrintNameLength

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

DUMMYUNIONNAME.MountPointReparseBuffer.PathBuffer[1]

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

DUMMYUNIONNAME.GenericReparseBuffer

DUMMYUNIONNAME.GenericReparseBuffer.DataBuffer[1]

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

Комментарии

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

Эту структуру можно использовать только для точек повторного анализа Майкрософт. Сторонние владельцы точек повторного преобразования должны использовать вместо этого структуру REPARSE_GUID_DATA_BUFFER .

Точки повторного анализа Майкрософт могут использовать структуру REPARSE_DATA_BUFFER или структуру REPARSE_GUID_DATA_BUFFER.

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

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

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

Дополнительные сведения о тегах точек повторного просмотра см. в документации по Microsoft Windows SDK.

Требования

Требование Значение
Заголовок ntifs.h (включая Ntifs.h, Fltkernel.h)

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

FILE_OBJECT

FILE_REPARSE_POINT_INFORMATION

FLT_PARAMETERS для IRP_MJ_FILE_SYSTEM_CONTROL

FSCTL_DELETE_REPARSE_POINT

FSCTL_GET_REPARSE_POINT

FSCTL_SET_REPARSE_POINT

FltFsControlFile

FltTagFile

FltTagFileEx

FltUntagFile

IRP_MJ_FILE_SYSTEM_CONTROL

IsReparseTagMicrosoft

IsReparseTagNameSurrogate

REPARSE_DATA_BUFFER_EX

REPARSE_GUID_DATA_BUFFER

ZwFsControlFile