Receiving the Meeting Response

When Mr. John receives Mr. Saylor's response, the response can be recorded on the Meeting object in Mr. John's Calendar special folder.

To accomplish this task, the client issues the RopOpenMessage ROP ([MS-OXCROPS] section to get a handle to the object, and the RopGetPropertiesSpecific ROP ([MS-OXCROPS] section to get the PidTagMessageClass property ([MS-OXCMSG] section The server returns a handle to the Meeting Response object and the value for this property, which is "IPM.Schedule.Meeting.Resp.Pos".

After seeing that this is a Meeting Response object, the client issues the RopOpenMessage ROP for the Meeting object in the Calendar special folder. The server returns a handle for the Meeting object. The server also returns the set of RecipientRow structures, as described in [MS-OXCDATA] section 2.8.3, as a result of opening the object. These RecipientRow structures need to be stored in an in-memory recipient cache so that they can be manipulated and then later replace those on the Meeting object.

The client uses the RopGetPropertiesSpecific ROP ([MS-OXCROPS] section to get the following properties from the Meeting Response object, the values of which are returned by the server:

  • PidTagSentRepresentingSearchKey ([MS-OXOMSG] section

  • PidTagSentRepresentingName ([MS-OXOMSG] section

  • PidTagSenderSearchKey ([MS-OXOMSG] section

  • PidTagSenderName ([MS-OXOMSG] section

  • PidLidAttendeeCriticalChange (section

If the PidTagSentRepresentingSearchKey and PidTagSentRepresentingName properties are available, these are used for searching for the RecipientRow structure. Otherwise, the PidTagSenderSearchKey and PidTagSenderName properties are used. The client looks through the RecipientRow structures, first attempting to find a PidTagSearchKey property ([MS-OXCPRPT] section value that matches the value of the PidTagSentRepresentingSearchKey (or PidTagSenderSearchKey) property. If no match is found, then the client attempts to match the value of the PidTagDisplayName property ([MS-OXCFOLD] section from the RecipientRow structure with the value of the PidTagSentRepresentingName (or PidTagSenderName) property.

If a RecipientRow structure is not found, a new one with its PidTagRecipientType property ([MS-OXOMSG] section set to MAPI_CC is added to the in-memory recipient cache to represent this attendee. The extra properties that are added to the in-memory RecipientRow structure that represents this attendee are listed in the following table.


Property ID

Property type


PidTagRecipientTrackStatus (section


0x0003 (PtypInteger32 ([MS-OXCDATA] section 2.11.1)



PidTagRecipientTrackStatusTime (section


0x0040 (PtypTime ([MS-OXCDATA] section 2.11.1)

0x01C87427BCCA9A00 (2008/02/21 01:19:00.000)

The value of the PidLidAttendeeCriticalChange property is rounded down to the nearest minute and then set as the value of the PidTagRecipientTrackStatusTime property.

The client uses the RopRemoveAllRecipients ROP ([MS-OXCROPS] section to delete all the recipients (2) from the Meeting object and then uses the RopModifyRecipients ROP ([MS-OXCROPS] section to copy the in-memory recipient cache back onto the Message object.

The client sets the property listed in the following table on the Meeting Response object by using the RopSetProperties ROP ([MS-OXCROPS] section, followed by the RopSaveChangesMessage ROP ([MS-OXCROPS] section


Property ID

Property type


PidTagProcessed (section


0x000B (PtypBoolean ([MS-OXCDATA] section 2.11.1))

0x01 (TRUE)

Finally, the client releases both the Meeting object and the Meeting Response object by using the RopRelease ROP ([MS-OXCROPS] section