已確認(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

    新狀態由舊狀態決定——即當地節目發布 確認時對話的狀態。 舊狀態以前一個接收呼叫的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