структура 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) |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по