2.2.2 Attachment Object Storage
The Attachment object storage contains streams and substorages that store properties pertaining to one Attachment object.
The following MUST be true for Attachment object storages:
The Attachment object storage representing the first Attachment object is named "__attach_version1.0_#00000000". The storage representing the second is named "__attach_version1.0_#00000001" and so on. The digit suffix is in hexadecimal. For example, the storage name for the eleventh Attachment object is "__attach_version1.0_#0000000A"
A .msg file can have a maximum of 2048 Attachment object storages.
There is exactly one property stream, and it contains entries for all properties of the Attachment object.
There is exactly one stream for each variable length property of the Attachment object, as specified in section 2.1.3.
There is exactly one stream for each fixed length multiple-valued property of the Attachment object, as specified in section 2.1.4.1.
For each variable length multiple-valued property of the Attachment object, if there are N values, there are N + 1 streams, as specified in section 2.1.4.2.
If the Attachment object itself is a Message object, there is an Embedded Message object storage under the Attachment object storage.
If the Attachment object has a value of afStorage (0x00000006) for the PidTagAttachMethod property ([MS-OXCMSG] section 2.2.2.9), then there is a custom attachment storage under the Attachment object storage.
For any named properties on the Attachment object, the corresponding mapping information MUST be present in the named property mapping storage.