Request_To_Send (CPI-C)

Request_To_Send调用 (函数名称 cmrts) 通知合作伙伴计划本地计划要发送数据。

语法

  
CM_ENTRY Request_To_Send(   
  unsigned char FAR *conversation_ID,    
  CM_INT32 FAR *return_code              
);  

参数

conversation_ID
提供的参数。 指定会话的标识符。 此参数的值由 Initialize_ConversationAccept_Conversation 返回。

return_code
从此调用返回的代码。 本主题后面列出了有效的返回代码。

返回代码

CM_OK
主返回代码;调用已成功执行。

CM_OPERATION_NOT_ACCEPTED
主返回代码;对此会话的上一个操作不完整。

CM_OPERATION_INCOMPLETE
主返回代码;操作尚未完成, (处理模式是非阻止,仅) 且仍在进行中。 程序可以发出 Wait_For_Conversation 以等待操作完成,或 Cancel_Conversation 取消操作和会话。 如果已调用 Specify_Windows_Handle ,则应用程序应等待 Microsoft® Windows® 消息的通知,而不是 调用 Wait_For_Conversation

CM_PROGRAM_PARAMETER_CHECK
主返回代码; 由 conversation_ID 指定的值无效。

CM_PROGRAM_STATE_CHECK
主返回代码;会话不处于 RECEIVE、SEND、SEND_PENDING、CONFIRM、CONFIRM_SEND或CONFIRM_DEALLOCATE状态。

CM_PRODUCT_SPECIFIC_ERROR
主返回代码;发生特定于产品的错误,并且已记录在产品错误日志中。

状态更改

会话可以处于以下任一状态:RECEIVE、SEND、SEND_PENDING、CONFIRM、CONFIRM_SEND或CONFIRM_DEALLOCATE。

没有状态更改。

为了响应此请求,合作伙伴计划可以通过发出以下调用之一将会话更改为 RECEIVE 状态:

  • 接收 类型设置为 CM_RECEIVE_AND_WAIT

  • Prepare_To_Receive

  • 发送类型设置为 CM_SEND_AND_PREP_TO_RECEIVE 的Send_Data

    合作伙伴计划也可以忽略要发送的请求。

    当本地程序通过后续 Receive 调用的 status_received 参数接收以下值之一时,本地程序的聊天状态更改为 SEND:

  • CM_SEND_RECEIVED

  • CM_CONFIRM_SEND_RECEIVED和本地程序使用 “已确认 ”呼叫进行答复

注解

合作伙伴计划通过以下调用的 request_to_send_received 参数接收请求发送通知:

  • 已确认

  • Receive

  • Send_Data

  • Send_Error

  • Test_Request_To_Send_Received

    请求发送通知会立即发送到合作伙伴计划。 CPI-C 不会等到发送缓冲区填满或刷新。 因此,请求发送通知可能会不按顺序到达。 例如,如果本地程序处于 SEND 状态,并发出 Prepare_To_Receive 调用,然后 发出Request_To_Send 调用,则处于 RECEIVE 状态的合作伙伴计划可以在收到发送通知之前接收请求发送通知。 因此,可以通过 Receive 调用向程序报告request_to_send

    收到请求发送通知后,合作伙伴逻辑单元 (LU) 将保留通知,直到合作伙伴发出返回 request_to_send_received的调用。 LU 为每个会话仅保留一个请求发送通知。 因此,与合作伙伴事务程序 (TP) 显式处理的调用相比,本地程序可以发出更多的Request_To_Send调用。