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.