確認呼叫(函式名稱 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
新狀態由舊狀態決定——即當地節目發布 確認時對話的狀態。 舊狀態以前一個接收呼叫的status_received值表示。 下表總結了當 return_code 設為 CM_OK 時可能發生的狀態變化。
| 舊州 | 新國家 |
|---|---|
| 確認 | RECEIVE |
| CONFIRM_SEND | SEND |
| CONFIRM_DEALLOCATE | 重排 |
其他返回碼則不會改變狀態。
備註
確認請求由合作夥伴計畫中的以下通話之一發出:
確認。
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