2.5 ExtraData

ExtraData refers to a set of structures that convey additional information about a link target. These optional structures can be present in an extra data section that is appended to the basic Shell Link Binary File Format.

The ExtraData structures conform to the following ABNF rules [RFC5234]:

            
 EXTRA_DATA       = *EXTRA_DATA_BLOCK TERMINAL_BLOCK 
            
 EXTRA_DATA_BLOCK = CONSOLE_PROPS / CONSOLE_FE_PROPS / DARWIN_PROPS /
                    ENVIRONMENT_PROPS / ICON_ENVIRONMENT_PROPS /
                    KNOWN_FOLDER_PROPS / PROPERTY_STORE_PROPS /
                    SHIM_PROPS / SPECIAL_FOLDER_PROPS /
                    TRACKER_PROPS / VISTA_AND_ABOVE_IDLIST_PROPS
            

EXTRA_DATA: A structure consisting of zero or more property data blocks followed by a terminal block.

EXTRA_DATA_BLOCK: A structure consisting of any one of the following property data blocks.

TERMINAL_BLOCK A structure that indicates the end of the extra data section.

The general structure of an extra data section is shown in the following diagram.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

ExtraDataBlock (variable)

...

TerminalBlock

ExtraDataBlock (variable): An optional array of bytes that contains zero or more property data blocks listed in the EXTRA_DATA_BLOCK syntax rule.

TerminalBlock (4 bytes): A 32-bit, unsigned integer that indicates the end of the extra data section. This value MUST be less than 0x00000004.