This documentation is archived and is not being maintained.


This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.

Creates a new attachment.

HRESULT CreateAttach(
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulAttachmentNum,
LPATTACH FAR * lppAttach


[in] Pointer to the interface identifier (IID) representing the interface to be used to access the message. Passing NULL results in the message's standard interface, or IMessage, being returned.


[in] Bitmask of flags that controls how the attachment is created. The following flag can be set:


Allows CreateAttach to return successfully, possibly before the attachment is fully accessible to the calling client. If the attachment is not accessible, making a subsequent call to it can result in an error.


[out] Pointer to an index number identifying the newly created attachment. This number is valid only when the message is open and is the basis for the attachment's PR_ATTACH_NUM (PidTagAttachNumber) property.


[out] Pointer to a pointer to the open attachment object.


The attachment was successfully created.

The IMessage::CreateAttach method creates a new attachment on a message. The new attachment and any properties that are set for it, are not available until a client has called both the attachment's IMAPIProp::SaveChanges method and the message's IMAPIProp::SaveChanges method.

The attachment number pointed to by lpulAttachmentNum is unique and valid only within the context of the message. That is, two attachments in two different messages can have the same number while two attachments in the same message cannot.