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.
CONSOLE_PROPS: A ConsoleDataBlock structure (section 2.5.1).
CONSOLE_FE_PROPS: A ConsoleFEDataBlock structure (section 2.5.2).
DARWIN_PROPS: A DarwinDataBlock structure (section 2.5.3).
ENVIRONMENT_PROPS: An EnvironmentVariableDataBlock structure (section 2.5.4).
ICON_ENVIRONMENT_PROPS: An IconEnvironmentDataBlock structure (section 2.5.5).
KNOWN_FOLDER_PROPS: A KnownFolderDataBlock structure (section 2.5.6).
PROPERTY_STORE_PROPS: A PropertyStoreDataBlock structure (section 2.5.7).
SHIM_PROPS: A ShimDataBlock structure (section 2.5.8).
SPECIAL_FOLDER_PROPS: A SpecialFolderDataBlock structure (section 2.5.9).
TRACKER_PROPS: A TrackerDataBlock structure (section 2.5.10).
VISTA_AND_ABOVE_IDLIST_PROPS: A VistaAndAboveIDListDataBlock structure (section 2.5.11).
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.
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
3 |
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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.