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

  • Send_Data 将发送类型设置为CM_SEND_AND_PREP_TO_RECEIVE

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

    当本地程序通过后续接收调用的 status_received 参数接收以下值之一时,会话状态更改为“发送”本地程序:

  • CM_SEND_RECEIVED

  • CM_CONFIRM_SEND_RECEIVED和本地程序通过 确认 呼叫进行回复

注解

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

  • 已确认

  • 接收

  • Send_Data

  • Send_Error

  • Test_Request_To_Send_Received

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

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