Missing information in MS-OXMSG how to write the property stream value for property tag 0x3701000D

Answered Missing information in MS-OXMSG how to write the property stream value for property tag 0x3701000D

  • Monday, July 16, 2012 4:39 PM
     
     

    Hi,

    I cannot find documentation in MS-OXMSG about which value should be written into the property stream for the attachment data property PR_ATTACH_DATA_OBJ 0x3701000D.

    By looking at msg files written by Outlook for attachment types ATTACH_EMBEDDED_MSG and ATTACH_OLE I could see that either the DWORDs 0xffffffff 0x1 (embedded message) or 0xffffffff 0x4 (OLE storage) are written.

    Are these the only possible values?

    Given a msg file without these values in the property stream of attachments Outlook refuses to access those attachments.

    I found this thread http://social.msdn.microsoft.com/Forums/eu/os_exchangeprotocols/thread/9e4f22e6-6d75-40fb-9d2e-c977fb62a2f7 but to me the answer seems wrong. The question is about which value to write to the property stream bit the "marked answer" speaks about what is written to the attachment sub storage.

    Thanks for any help on this
    Sven


    -- SvenC

All Replies

  • Monday, July 16, 2012 6:50 PM
    Moderator
     
     

    Hi Sven,

    Thank you for your question.  A colleague will be in contact with you soon to investigate.

    Regards,
    Mark Miller
    Escalation Engineer
    US-CSS DSC PROTOCOL TEAM

  • Tuesday, July 17, 2012 3:53 PM
    Moderator
     
     
    Hi Sven, I am the engineer who will be working with you on this issue. I am currently researching the problem and will provide you with an update soon. Thank you for your patience.

    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Tuesday, July 17, 2012 8:26 PM
    Moderator
     
     

    Hi Sven, according to MS-OXCMSG section 2.2.2.8, "The PidTagAttachDataObject (PR_ATTACH_DATA_OBJ) property contains the binary representation of the Attachment object in an application-specific format." Because the value of that property is 'application-specific' it is outside the scope of the Exchange Server protocol documents.

    You can also find additional information about the PR_ATTACH_DATA_OBJ property in the Outlook 2010 MAPI Reference.

    Please let me know if this helps.


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Wednesday, July 18, 2012 3:28 PM
     
     

    Hi Josh,

    sorry, but that is the same incomplete answer as in the above linked thread.

    Let me try to re-explain:

    I have no problems to write the storage content into the substorage of the msg file.
    My problem is which value to write into the *property stream* for property 0x3701000D.

    According to MS-OXMSG 2.1.3 the property type 0x000D (object) is a variable length property.

    That leads me to MS-OXMSG 2.4.2.2 where writing data to the Property Stream is described for variable length property types. But PtypObject is not specified.
    When I look at msg files from Outlook I can see that the size DWORD is set to 0xffffffff and the field which is named Reserved is 2.4.2.2 is set to either 1 or 4. Here is a quote:

    "Reserved (4 bytes): This field can be set to zero when writing a .msg file and MUST be ignored when reading a .msg file"

    But with Reserved == 0, Outlook refuses to open that msg file, so the "MUST be ignored" seems to be ignored by Outlook.

    Either I am missing something in the protocol, or the protocol is incomplete or Outlooks implementation is incorrect. The last option would not help as I do not expect any Outlook fixes in this area, hence I would like an updated documentation how to write that Property Stream entry correctly.


    -- SvenC

  • Wednesday, July 18, 2012 9:38 PM
    Moderator
     
     

    Hi Sven, thank you for providing that additional information. Now I understand the issue that you are having with the Reserved field. I am looking into this and will let you know when I have more information.


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Wednesday, July 18, 2012 9:59 PM
     
     
    Thanks Josh for taking another look.

    Just to clarify: both the Size and the Reserved field values seem undocumented in MS-OXMSG for PtypObject.
    So the value 0xffffffff for Size is just what I found by looking into msg files of Outlook with DocFile Viewer, nothing said about that value in MS-OXMSG.

    -- SvenC

  • Friday, July 27, 2012 4:39 PM
    Moderator
     
     

    Hi Sven, what version of Outlook are you using? Also, would you be able to send me the sample .MSG files that you are looking at? You can send those to me at dochelp(at)microsoft(dot)com.

    Thank you.


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Monday, July 30, 2012 6:51 PM
    Moderator
     
     

    Hi Sven, I am trying to reproduce this issue. Can you provide me with the detailed steps that you are following to examine the contents of the 'property stream' for the 0x3701000D property?

     

    Thank you.


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Monday, July 30, 2012 7:41 PM
     
     

    Hi Josh,

    I just sent you a mail to dochelp with subject "Missing information in MS-OXMSG how to write the property stream value for property tag 0x3701000D"

    I hope that helps you to see which part of the documentation seem incomplete to me.


    -- SvenC

  • Monday, July 30, 2012 7:52 PM
    Moderator
     
     

    Hi Sven, I received your e-mail. I will review the details and let you know when I have more information.

    Thank you.


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Monday, August 06, 2012 6:08 PM
    Moderator
     
     Answered

    Hi Sven, here is what I was able to find out about the Size and Reserved properties. I have filed a request to have this information added to the documentation.

    Size: if a property is created/modified using OpenProperty then the size is not known and is just set to 0xFFFFFFFF.  Since you always have to use OpenProperty to create/open the embedded message attachment, they always have this size.

    Reserved: for any property that is PT_OBJECT, the type which is was created with is stored in half of the reserved field.   Which is 1 for messages and 4 for storages.


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Monday, August 06, 2012 8:31 PM
     
     
    Hi Josh, thank you for the answer. 0xffffffff makes sense but from where comes the definition of the values 1 and 4? It is not PR_ATTACH_METHOD and not PT_OBJECT_TYPE. What is it? Can I find it in the MAPI headers?

    -- SvenC

  • Friday, August 10, 2012 6:33 PM
    Moderator
     
     Answered

    Hi Sven, the values for the Reserved field will be included in the update. For now, you should use 0x01 when PidTagAttachMethod is set to ATTACH_EMBEDDED_MSG (0x05) and 0x04 when PidTagAttachMethod is set to ATTACH_OLE (0x06).


    Josh Curry (jcurry) | Escalation Engineer | Open Specifications Support Team

  • Saturday, August 11, 2012 8:29 AM
     
     

    Hi Josh, thank you for your help.


    -- SvenC