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參數設定為下列其中一個值時,本機程式才會發出確認:
CM_CONFIRM_RECEIVED
CM_CONFIRM_SEND_RECEIVED
CM_CONFIRM_DEALLOC_RECEIVED