[StructLayout(LayoutKind.Sequential)]
struct REPARSE_DATA_BUFFER {
private uint ReparseTag;
private ushort ReparseDataLength;
private ushort Reserved;
private ushort SubstituteNameOffset;
private ushort SubstituteNameLength;
private ushort PrintNameOffset;
private ushort PrintNameLength;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x3FF0)]
private byte[] PathBuffer;
}
ReparseTag
Reparse point tag. Must be a Microsoft reparse point tag.
ReparseDataLength
Size, in bytes, of the data after the Reserved member. This can be calculated by
(4 * sizeof(ushort)) + SubstituteNameLength + PrintNameLength + (namesAreNullTerminated ? 2 * sizeof(char) : 0)
Reserved
Reserved; do not use.
SubstituteNameOffset
Offset, in bytes, of the substitute name string in the PathBuffer array.
SubstituteNameLength
Length, in bytes, of the substitute name string. If this string is null-terminated, SubstituteNameLength does not include space for the null character.
PrintNameOffset
Offset, in bytes, of the print name string in the PathBuffer array.
PrintNameLength
Length, in bytes, of the print name string. If this string is null-terminated, PrintNameLength does not include space for the null character.
PathBuffer
A buffer containing the unicode-encoded path string. The path string contains the substitute name string and print name string.
The maximum size of this structure is 16KiB.
The total size of the structure can be calculated by:
REPARSE_DATA_BUFFER_HEADER_SIZE + ReparseDataLength
where
REPARSE_DATA_BUFFER_HEADER_SIZE = sizeof(uint) + 2 * sizeof(ushort)