REPARSE_DATA_BUFFER 结构 (ntifs.h)
REPARSE_DATA_BUFFER 结构包含 Microsoft 重分析点的重分析点数据。 可以改用 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
重分析点标记。 必须是 Microsoft 重分析点标记。 (请参阅以下 “备注 ”部分。)
ReparseDataLength
DataBuffer 指向的缓冲区中重新分析数据的大小(以字节为单位)。
Reserved
关联文件对象的 FileName 成员指向的文件名未解析部分的长度(以字节为单位)。 有关 FileName 成员的详细信息,请参阅 FILE_OBJECT<。 仅当 I/O 失败并出现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 数组中包含的符号链接 (offset 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]
指向缓冲区的指针,该缓冲区包含重新分析点的 Microsoft 定义数据。
注解
microsoft 文件系统、筛选器和微筛选器驱动程序以及 I/O 管理器使用 REPARSE_DATA_BUFFER 结构来存储重分析点的数据。
此结构只能用于 Microsoft 重新分析点。 第三方重分析点所有者必须改用 REPARSE_GUID_DATA_BUFFER 结构。
Microsoft 重分析点可以使用REPARSE_DATA_BUFFER结构或REPARSE_GUID_DATA_BUFFER结构。
在联合中,可以使用 GenericReparseBuffer 结构来解释任何IO_REPARSE_TAG_XXX标记的有效负载,也可以选择使用联合中的其他结构之一,如下所示:
IO_REPARSE_TAG_SYMLINK FileTag 时,请使用 SymbolicLinkReparseBuffer 结构。
IO_REPARSE_TAG_MOUNT_POINT FileTag 时,请使用 MountPointReparseBuffer 结构。
有关重新分析点标记的详细信息,请参阅Microsoft Windows SDK文档。
要求
要求 | 值 |
---|---|
Header | ntifs.h (包括 Ntifs.h、Fltkernel.h) |
另请参阅
FILE_REPARSE_POINT_INFORMATION