Windows Driver Kit: Installable File System Drivers
REPARSE_DATA_BUFFER

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.)

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;

#define REPARSE_DATA_BUFFER_HEADER_SIZE  FIELD_OFFSET(REPARSE_DATA_BUFFER, GenericReparseBuffer)

#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE  ( 16 * 1024 )

Members

ReparseTag
Reparse point tag. Must be a Microsoft reparse point tag. (See the following Comments 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.
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.)
DataBuffer
Microsoft-defined data for the reparse point.

Comments

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

Headers: Defined in ntifs.h. Include ntifs.h or fltkernel.h.

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


Send feedback on this topic
Built on October 01, 2009
Page view tracker