2 Structures

The Shell Link Binary File Format consists of a sequence of structures that conform to the following ABNF rules [RFC5234].

  
 SHELL_LINK = SHELL_LINK_HEADER [LINKTARGET_IDLIST] [LINKINFO]
              [STRING_DATA] *EXTRA_DATA
  

SHELL_LINK_HEADER: A ShellLinkHeader structure (section 2.1), which contains identification information, timestamps, and flags that specify the presence of optional structures.

LINKTARGET_IDLIST: An optional LinkTargetIDList structure (section 2.2), which specifies the target of the link. The presence of this structure is specified by the HasLinkTargetIDList bit (LinkFlags section 2.1.1) in the ShellLinkHeader.

LINKINFO: An optional LinkInfo structure (section 2.3), which specifies information necessary to resolve the link target. The presence of this structure is specified by the HasLinkInfo bit (LinkFlags section 2.1.1) in the ShellLinkHeader.

STRING_DATA: Zero or more optional StringData structures (section 2.4), which are used to convey user interface and path identification information. The presence of these structures is specified by bits (LinkFlags section 2.1.1) in the ShellLinkHeader.

EXTRA_DATA: Zero or more ExtraData structures (section 2.5).

Notes:

  • Structures of the Shell Link Binary File Format can define strings in fixed-length fields. In fixed-length fields, strings MUST be null-terminated. If a string is smaller than the size of the field that contains it, the bytes in the field following the terminating null character are undefined and can have any value. The undefined bytes MUST NOT be used.

  • Some Shell Link Binary File Format structures contain size fields; for example, HeaderSize in the ShellLinkHeader structure (section 2.1) and LinkInfoSize in the LinkInfo structure (section 2.3). Unless otherwise specified, the value contained by these size fields includes the size of size field itself.