Freigeben über


A word about MAPI named properties ...

One of the early roadblocks to understanding MAPI and especially Outlook's integration with it, is coming to grips with Mapi's named property feature.  If you use a tool like Steve Griffin's excellent MFCMAPI.EXE, you can see named props in a table view type of UI.

 A large subset of mapi tags are static and well defined.  PR_SUBJECT is always proptag 0x0037 for example.

Properties in the 0x8000 range however are not static.  They are reserve for named properties.  So an application can tell mapi "I want a named property called myprop, and the store will dynamically "map" this named prop to one of the tags in the 0x8000 range.

In a choice that might make sense in some internal way, but always adds confusion to the mapi beginner, the outlook team decided to "name" their named props using a numbering scheme that coincentally started around 0x8000.  Therefore, the outlook named properties look visually JUST like regular property tags.  What this means is that you sometimes see documentation that says "look at this prop 0x8### that outlook uses for such and such.  So if you assume that the 0x8### is the actual tag, you look at the wrong property.  You must find out what the 0x8### maps to for your particular store.   MFCMAPI.EXE shows the named prop names out in about the 4th or 5th column.  You can sort by that column, find the 0x8### you are intersted in, and read the data from that row.

For example, you can see in Steve's post about the new timezone props for Outlook 2007 (https://blogs.msdn.com/stephen_griffin/archive/2006/12/06/outlook-2007-timezone-structures.aspx) that a couple of new "outlook" props are used for time zone information.

dispidApptTZDefStartDisplay  0x825E 
dispidApptTZDefEndDisplay    0x825F  

Lets say you want to know whether an item in outlook has been stamped with the new time zone props.  If you use MFCMAPI.EXE and look immediately for a property tag of 0x825e you will probably be dissapointed.  What you must do is scroll over to the right to see the named props column.  Sort by the column, go down to where 0x825E would be, and if its there, you have the new props.

Comments

  • Anonymous
    October 09, 2008
    Thanks for this tip - it really cleared up those dang 0x8000 properties.   I'm troubleshooting an error with calendar items and recurrence information not being located - hopefully digging in the mapi data with the mfcmapi.exe tool will shed some light on the problem. Thanks!