структура 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_REPARSE_POINT_INFORMATION