When HasLinkTargetIDList is set, this structure follows the header. It holds the target as an item ID list, the shell’s own way of naming a location.
Structure
0IDListSize the size of the IDList that follows22ItemID a two-byte size, then that many bytes less twovaries…more ItemIDsvaries…TerminalID two zero bytes2
| Size | Type | Name | Description |
|---|---|---|---|
| 2 | u16 | IDListSize | The size in bytes of the IDList field. |
| variable | IDList | IDList | Zero or more ItemIDs, then the TerminalID. |
ItemID
| Size | Type | Name | Description |
|---|---|---|---|
| 2 | u16 | ItemIDSize | The size of this ItemID in bytes, these two bytes included. |
| variable | bytes | Data | The contents of the item. MS-SHLLINK treats these as opaque. |
An ItemIDSize of zero is the TerminalID, which ends the list.
What the Data holds depends on the shell folder that made the item, and is not part of MS-SHLLINK. The shell items page describes the common kinds.