1.3.2 Format of ROP Buffers

A ROP input buffer contains a list of ROP requests and a Server object handle table. A ROP output buffer contains a list of ROP responses and a Server object handle table. Each ROP request contains input values to use for an operation. Each ROP response contains output produced during the processing of previous requests. The Server object handle table contains Server object handles that are used as input or output for ROPs.

With few exceptions, a ROP request or ROP response does not directly specify a Server object handle but instead contains an index into the Server object handle table. When the index is used for an input parameter, it specifies the location of the Server object handle identifying the input Server object. When the index is used for an output parameter, it specifies the entry in the Server object handle table where the handle for the created Server object will be stored if the operation is successful. If the operation is unsuccessful, the content of the entry in the Server object handle table is undefined.                   

The usage of an index allows a client to create a ROP input buffer consisting of ROP requests that reference as an input parameter a Server object created earlier during the server's processing of a previous ROP input buffer. In this way, fewer round-trip calls between the client and server are necessary.