Confirmed (CPI-C)
确认调用 (函数名称 cmcfmd) 回复来自合作伙伴计划的确认请求。 它会通知合作伙伴计划,本地计划未在收到的数据中检测到错误。 由于发出确认请求的程序等待确认, 因此 Confirmed 会同步这两个程序的处理。
语法
CM_ENTRY Confirmed(
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
主返回代码;当程序发出此调用时,对话未处于 CONFIRM、CONFIRM_SEND或CONFIRM_DEALLOCATE状态。
CM_PRODUCT_SPECIFIC_ERROR
主返回代码;发生特定于产品的错误,并且已记录在产品错误日志中。
状态更改
当程序发出 “确认”时,会话必须处于以下状态之一:
确认
CONFIRM_SEND
CONFIRM_DEALLOCATE
新状态由旧状态确定,即本地程序发布 “已确认”时会话的状态。 旧状态由前面的 Receive 调用的 status_received 值指示。 下表汇总了 return_code设置为CM_OK 时可能的状态更改。
旧状态 | 新状态 |
---|---|
确认 | RECEIVE |
CONFIRM_SEND | SEND |
CONFIRM_DEALLOCATE | RESET |
其他返回代码不会导致状态更改。
注解
确认请求由合作伙伴计划中以下调用之一发出:
确认。
Prepare_To_Receive 准备接收类型是否设置为 CM_PREP_TO_RECEIVE_CONFIRM 或 CM_PREP_TO_RECEIVE_SYNC_LEVEL 且会话同步级别设置为 CM_CONFIRM。
如果解除分配类型设置为 CM_DEALLOCATE_CONFIRM 或 CM_DEALLOCATE_SYNC_LEVEL 并且会话同步级别设置为 CM_CONFIRM,则解除分配。
在 以下情况下Send_Data:
发送类型设置为CM_SEND_AND_CONFIRM。
发送类型设置为CM_SEND_AND_PREPARE_TO_RECEIVE准备接收类型设置为CM_PREPARE_TO_RECEIVE_CONFIRM。
发送类型设置为 CM_SEND_AND_PREPARE_TO_RECEIVE,准备接收类型设置为 CM_PREPARE_TO_RECEIVE_SYNC_LEVEL,同步级别设置为 CM_CONFIRM。
发送类型设置为CM_SEND_AND_DEALLOCATE,解除分配类型设置为CM_DEALLOCATE_CONFIRM。
发送类型设置为 CM_SEND_AND_DEALLOCATE,解除分配类型设置为 CM_DEALLOCATE_SYNC_LEVEL,同步级别设置为 CM_CONFIRM。
本地程序通过 Receive 的 status_received 参数接收确认请求。 仅当 status_received 参数设置为以下值之一时,本地程序才能发出 Confirmed:
CM_CONFIRM_RECEIVED
CM_CONFIRM_SEND_RECEIVED
CM_CONFIRM_DEALLOC_RECEIVED