REPARSE_DATA_BUFFER structure
The REPARSE_DATA_BUFFER structure contains reparse point data for a Microsoft reparse point. (Third-party reparse point owners must use the REPARSE_GUID_DATA_BUFFER structure instead.)
Syntax
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; }; } REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
Members
- ReparseTag
-
Reparse point tag. Must be a Microsoft reparse point tag. (See the following Remarks section.)
- ReparseDataLength
-
Size, in bytes, of the reparse data in the DataBuffer member.
- Reserved
-
Length, in bytes, of the unparsed portion of the file name pointed to by the FileName member of the associated file object. For more information about the FileName member, see FILE_OBJECT. This member is only valid for create operations when the I/O fails with STATUS_REPARSE. For all other purposes, such as setting or querying a reparse point for the reparse data, this member is treated as reserved.
- ( unnamed union )
-
- SymbolicLinkReparseBuffer
-
- SubstituteNameOffset
-
Offset, in bytes, of the substitute name string in the PathBuffer array. Note that this offset must be divided by sizeof(WCHAR) to get the array index.
- SubstituteNameLength
-
Length, in bytes, of the substitute name string. If this string is NULL-terminated, SubstituteNameLength does not include space for the UNICODE_NULL character.
- PrintNameOffset
-
Offset, in bytes, of the print name string in the PathBuffer array. Note that this offset must be divided by sizeof(WCHAR) to get the array index.
- PrintNameLength
-
Length, in bytes, of the print name string. If this string is NULL-terminated, PrintNameLength does not include space for the UNICODE_NULL character.
- Flags
-
Used to indicate if the given symbolic link is an absolute or relative symbolic link. If Flags contains SYMLINK_FLAG_RELATIVE, the symbolic link contained in the PathBuffer array (at offset SubstitueNameOffset) is processed as a relative symbolic link; otherwise, it is processed as an absolute symbolic link.
- PathBuffer
-
First character of the path string. This is followed in memory by the remainder of the string. The path string contains the substitute name string and print name string. The substitute name and print name strings can appear in any order in the PathBuffer. (To locate the substitute name and print name strings in the PathBuffer, use the SubstituteNameOffset, SubstituteNameLength, PrintNameOffset, and PrintNameLength members.)
- MountPointReparseBuffer
-
- SubstituteNameOffset
-
Offset, in bytes, of the substitute name string in the PathBuffer array. Note that this offset must be divided by sizeof(WCHAR) to get the array index.
- SubstituteNameLength
-
Length, in bytes, of the substitute name string. If this string is NULL-terminated, SubstituteNameLength does not include space for the UNICODE_NULL character.
- PrintNameOffset
-
Offset, in bytes, of the print name string in the PathBuffer array. Note that this offset must be divided by sizeof(WCHAR) to get the array index.
- PrintNameLength
-
Length, in bytes, of the print name string. If this string is NULL-terminated, PrintNameLength does not include space for the UNICODE_NULL character.
- PathBuffer
-
First character of the path string. This is followed in memory by the remainder of the string. The path string contains the substitute name string and print name string. The substitute name and print name strings can appear in any order in the PathBuffer. (To locate the substitute name and print name strings in the PathBuffer, use the SubstituteNameOffset, SubstituteNameLength, PrintNameOffset, and PrintNameLength members.)
- GenericReparseBuffer
-
- DataBuffer
-
Microsoft-defined data for the reparse point.
Remarks
The REPARSE_DATA_BUFFER structure is used by Microsoft file systems, filters, and minifilter drivers, as well as the I/O manager, to store data for a reparse point.
This structure can only be used for Microsoft reparse points. Third-party reparse point owners must use the REPARSE_GUID_DATA_BUFFER structure instead.
Microsoft reparse points can use the REPARSE_DATA_BUFFER structure or the REPARSE_GUID_DATA_BUFFER structure.
For more information about reparse point tags, see the Microsoft Windows SDK documentation.
For more information about absolute and relative symbolic links, see Creating Symbolic Links in the Microsoft Windows SDK documentation.
Requirements
|
Header |
|
|---|
See also
- FILE_REPARSE_POINT_INFORMATION
- FLT_PARAMETERS for IRP_MJ_FILE_SYSTEM_CONTROL
- FltFsControlFile
- FltTagFile
- FltUntagFile
- FSCTL_DELETE_REPARSE_POINT
- FSCTL_GET_REPARSE_POINT
- FSCTL_SET_REPARSE_POINT
- IRP_MJ_FILE_SYSTEM_CONTROL
- IsReparseTagMicrosoft
- IsReparseTagNameSurrogate
- REPARSE_GUID_DATA_BUFFER
- ZwFsControlFile