2.2.1 ROP Input and Output Buffers

The ROP input buffer, which is sent by the client, includes an array of ROP request buffers to be processed by the server. The ROP output buffer, which is sent by the server, includes an array of ROP response buffers. The ROP input and output buffers are transmitted between the client and the server as part of the payload of either the EcDoRpcExt2 method, as specified in [MS-OXCRPC] section 3.1.4.2, or the Execute request type,<2> as specified in [MS-OXCMAPIHTTP] section 2.2.4.2.

The ROP input buffer and ROP output buffer have the following structure.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

RopSize

RopsList (variable)

...

ServerObjectHandleTable (variable)

...

RopSize (2 bytes):  An unsigned integer that specifies the size of both this field and the RopsList field.

RopsList (variable):  An array of ROP buffers. For a ROP input buffer, this field contains an array of ROP request buffers. For a ROP output buffer, this field contains an array of ROP response buffers. The format of each ROP buffer is specified in subsequent sections. The size of this field is 2 bytes less than the value specified in the RopSize field.

ServerObjectHandleTable (variable):  An array of 32-bit values. Each 32-bit value specifies a Server object handle that is referenced by a ROP buffer. The size of this field is equal to the number of bytes of data remaining in the ROP input/output buffer after the RopsList field.