Attribute - $REPARSE_POINT (0xC0)
Previous
Next
Overview
As defined in $AttrDef, this attribute
has a no minimum size but a maximum of 16384 bytes.
Layout of the Attribute (Microsoft Reparse Point)
Offset |
Size |
Description |
~ |
~ |
Standard Attribute Header |
0x00 |
4 |
Reparse Type (and Flags) |
0x04 |
2 |
Reparse Data Length |
0x06 |
2 |
Padding (align to 8 bytes) |
0x08 |
V |
Reparse Data (a) |
Layout of the Attribute (Third-Party Reparse Point)
Offset |
Size |
Description |
~ |
~ |
Standard Attribute Header |
0x00 |
4 |
Reparse Type (and Flags) |
0x04 |
2 |
Reparse Data Length |
0x06 |
2 |
Padding (align to 8 bytes) |
0x08 |
16 |
Reparse GUID |
0x18 |
V |
Reparse Data (a) |
(a) The structure of the Reparse Data depends on the Reparse Type. There are
three defined Reparse Data (SymLinks, VolLinks and RSS) + the Generic Reparse.
Symbolic Link Reparse Data
Offset |
Size |
Description |
0x00 |
2 |
Substitute Name Offset |
0x02 |
2 |
Substitute Name Length |
0x04 |
2 |
Print Name Offset |
0x08 |
2 |
Print Name Length |
0x10 |
V |
Path Buffer |
Volume Link Reparse Data
Offset |
Size |
Description |
0x00 |
2 |
Substitute Name Offset |
0x02 |
2 |
Substitute Name Length |
0x04 |
2 |
Print Name Offset |
0x08 |
2 |
Print Name Length |
0x10 |
V |
Path Buffer |
Reparse Tag Flags
These are just the predefined reparse flags
Flag |
Description |
0x20000000 |
Is alias |
0x40000000 |
Is high latency |
0x80000000 |
Is Microsoft |
0x68000005 |
NSS |
0x68000006 |
NSS recover |
0x68000007 |
SIS |
0x68000008 |
DFS |
0x88000003 |
Mount point |
0xA8000004 |
HSM |
0xE8000000 |
Symbolic link |
Notes
Other Information
The reparse point tag defines the type of the reparse point. It also
includes several flags, which further describe the reparse point.
The reparse point tag is an unsigned 32-bit value divided in three parts:
1. The least significant 16 bits (i.e. bits 0 to 15) specifiy the type of
the reparse point.
2. The 13 bits after this (i.e. bits 16 to 28) are reserved for future use.
3. The most significant three bits are flags describing the reparse point.
They are defined as follows:
bit 29: Name surrogate bit. If set, the filename is an alias for
another object in the system.
bit 30: High-latecny bit. If set, accessing the first byte of data will
be slow. (E.g. the data is stored on a tape drive.)
bit 31: Microsoft bit. If set, the tag is owned by Microsoft. User
defined tags have to use zero here.
The system file FILE_$Extend/$Reparse contains an index named $R listing
all reparse points on the volume. The index entry keys are as defined
below. Note, that there is no index data associated with the index entries.
The index entries are sorted by the index key file_id. The collation rule is
COLLATION_NTOFS_ULONGS. FIXME: Verify whether the reparse_tag is not the
primary key / is not a key at all. (AIA)
Copyright ©