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
指示符号链接是绝对链接还是相对链接。 如果 标志 包含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]
指向包含重新分析点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标记的有效负载,或者根据需要使用联合中的其他结构之一,如下所示:
当 FileTag IO_REPARSE_TAG_SYMLINK时,请使用 SymbolicLinkReparseBuffer 结构。
当 FileTag IO_REPARSE_TAG_MOUNT_POINT时,请使用 MountPointReparseBuffer 结构。
有关重新分析点标记的详细信息,请参阅 Microsoft Windows SDK 文档。
要求
要求 | 价值 |
---|---|
标头 | ntifs.h(包括 Ntifs.h、Fltkernel.h) |
另请参阅
FILE_REPARSE_POINT_INFORMATION
IRP_MJ_FILE_SYSTEM_CONTROL的