4.2.2 Server Responds to Client Requests

The client has sent three separate ROP request buffers (RopGetRulesTable ([MS-OXCROPS] section 2.2.11.2), RopSetColumns ([MS-OXCROPS] section 2.2.5.1), and RopQueryRows ([MS-OXCROPS] section 2.2.5.4)), and the server responds with three ROP response buffers.

 0000: 3f 01 00 00 00 00

RopId: 0x3F (RopGetRulesTable)

InputHandleIndex: 1

ReturnValue: 0x00000000. This response indicates the client has successfully gotten a handle to the rules table for the specified folder.

  
 0000: 12 01 00 00 00 00 00

RopId: 0x12 (RopSetColumns)

InputHandleIndex: 1

ReturnValue: 0x00000000. This response indicates the client has successfully set the columns of the rules table.

CompletionStatus: 0x00 (TBLSTAT_COMPLETE ([MS-OXCTABL] section 2.2.2.1.3))

The response to the RopQueryRows ROP request buffer is slightly more verbose.

  
 0000: 15 01 00 00 00 00 02 01-00 00 01 00 00 00 01 3f
 0010: f8 56 10 00 01 00 00 00-01 00 00 00 55 55 55 55
 0020: d1 44 e3 40 50 00 72 00-6f 00 6a 00 65 00 63 00
 0030: 74 00 20 00 58 00 00 00

The first 9 bytes of a RopQueryRows ROP response contain data about the response.

  
 0000: 15 01 00 00 00 00 02 01-00

RopId: 0x15 (RopQueryRows)

InputHandleIndex: 1

ReturnValue: 0x00000000. This response indicates the RopQueryRows ROP call was successful.

Bookmark: 0x02 (BOOKMARK_END ([MS-OXCTABL] section 2.2.2.1.1))

RowCount: 1

This is followed by the row property array beginning at byte 0x0009, which in this example contains one row (indicated by the RowCount field). It is not possible to interpret this response without the context of the earlier RopSetColumns ROP request because its format is based on the number of requested columns and the data type of each column.

  
 0009: 00 01 00 00 00 01 3f f8-56 10 00 01 00 00 00 01
 0019: 00 00 00 55 55 55 55 d1-44 e3 40 50 00 72 00 6f
 0029: 00 6a 00 65 00 63 00 74-00 20 00 58 00 00 00

Has Flag: "FALSE"

Property 1: 0x56F83F0100000001

Property 2: 0x10 byte binary array

Property 3: "Project X"

Property 1, Property 2, and Property 3 correspond to the PidTagRuleId (section 2.2.1.3.1.1), PidTagRuleProviderData (section 2.2.1.3.1.8), and PidTagRuleName (section 2.2.1.3.1.4) properties specified by the earlier RopSetColumns ROP request. For more information, see [MS-OXCROPS] and [MS-OXCTABL].

At the end of the three ROP response buffers, the handle table is as follows.

  
 0000: 23 02 00 00 21 02 00 00

Handle 0: 0x00000223

Handle 1: 0x00000221

Note that the server has returned a proper handle for the rules table (0x00000221). The client uses this handle for any further requests relating to the rules table.