4.2.2.5 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 2.2.6.1) to get a handle to the object, and the RopGetPropertiesSpecific ROP ([MS-OXCROPS] section 2.2.8.3) to get the PidTagMessageClass property ([MS-OXCMSG] section 2.2.1.3). 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 2.2.8.3) to get the following properties from the Meeting Response object, the values of which are returned by the server:

  • PidTagSentRepresentingSearchKey ([MS-OXOMSG] section 2.2.1.58)

  • PidTagSentRepresentingName ([MS-OXOMSG] section 2.2.1.57)

  • PidTagSenderSearchKey ([MS-OXOMSG] section 2.2.1.52)

  • PidTagSenderName ([MS-OXOMSG] section 2.2.1.51)

  • PidLidAttendeeCriticalChange (section 2.2.5.2)

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 2.2.1.9) 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 2.2.2.2.2.5) 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 2.2.3.1) 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

Property ID

Property type

Value

PidTagRecipientTrackStatus (section 2.2.4.10.2)

0x5FFF

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

respAccepted

(0x00000003)

PidTagRecipientTrackStatusTime (section 2.2.4.10.3)

0x5FFB

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 2.2.6.4) to delete all the recipients (2) from the Meeting object and then uses the RopModifyRecipients ROP ([MS-OXCROPS] section 2.2.6.5) 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 2.2.8.6), followed by the RopSaveChangesMessage ROP ([MS-OXCROPS] section 2.2.6.3).

Property

Property ID

Property type

Value

PidTagProcessed (section 2.2.5.7)

0x7D01

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 2.2.15.3).