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_Conversation 或 Accept_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
发送类型设置为 CM_SEND_AND_PREP_TO_RECEIVE 的Send_Data
合作伙伴计划也可以忽略要发送的请求。
当本地程序通过后续 Receive 调用的 status_received 参数接收以下值之一时,本地程序的聊天状态更改为 SEND:
CM_SEND_RECEIVED
CM_CONFIRM_SEND_RECEIVED和本地程序使用 “已确认 ”呼叫进行答复
注解
合作伙伴计划通过以下调用的 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调用。