3.1.5.2.8 Receiving a CPMSetBindingsIn Request

When the server receives a CPMSetBindingsIn message request from a client, the server MUST do the following:

  1. Search the ConnectedClientsIdentifiers list for the HANDLE of the named pipe over which the server has received the CPMSetBindingsIn message. If it is not present, the server MUST report a STATUS_INVALID_PARAMETER (0xC000000D) error.

  2. Call the ClientQueryHasCursorHandle abstract interface to the GSS with the HANDLE of the named pipe over which the server has received the CPMSetBindingsIn message as its QueryIdentifier argument and with the _hCursor handle as its CursorHandle argument.<32>

  3. Verify that the bindings information is valid (that is, the column at least specifies value, length, or status to be returned; there is no overlap in bindings for value, length, or status; and value, length, and status fit in the row size specified) and, if not, report a DB_E_BADBINDINFO (0x80040E08) error.<33>

  4.  Call the SetBindings abstract interface with the HANDLE of the named pipe over which the server has received the CPMSetBindingsIn message as its QueryIdentifier argument, with the _hCursor handle as its CursorHandle argument, and with the aColumns field as its Columns argument. The server MUST report any error code returned as the Error output parameter.

  5. Respond to the client with a message header (only), with _msg set to CPMSetBindingsIn and _status set to the results of the specified binding.

  6. Report any errors encountered during message preparation or during any abstract interface call to the GSS. Errors that are specific to this request:

    • E_OUTOFMEMORY: generated by any resource allocation failure on the server or service side.

    • STATUS_INVALID_PARAMETER: generated when any of the parameters passed in by the client is invalid. Invalid parameters are those that do not obey the corresponding data structure layout as defined for their types in this document.

    Any other error code can be returned, but it will be treated as informative only.