3.2.4.1.5 Sending a CPMGetRowsIn Request

When the higher layer is about to receive rows data, it provides the protocol client with a valid cursor. The higher layer SHOULD do so when it has a valid cursor, and the bindings had been set with a CPMSetBindingsIn message.

When this request is received from the higher layer, the protocol client MUST do the following:

  1. Determine what unsigned integer value to specify for the _cbReadBuffer field. To determine this value, the client SHOULD take the maximum value from the following:

    • One thousand times the value of the _cRowsToTransfer field, rounded up to the nearest 512-byte multiple.

    • The value of _cbRowWidth, rounded up to the nearest 512-byte multiple.

    • Take the higher of these two values, up to the 16-kilobytes limit.

    • In cases where a single row is larger than 16 kilobytes, the protocol server cannot return results to this query.

  2. Specify a client base for variable-sized row data in the client address space in the _ulClientBase field<8>.

  3. Set the value of _cbSeek, which acts as an offset for Rows start, to "0x0000000C".

  4. Send a CPMGetRowsIn message to the protocol server.