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 状態で、送信通知を受信する前に要求から送信通知を受信できます。 このため、 request_to_send は Receive 呼び出しを介してプログラムに報告できます。
送信要求通知を受信すると、パートナー論理ユニット (LU) は、パートナーが request_to_send_receivedを返す呼び出しを発行するまで通知を保持します。 LU は、会話ごとに 1 つの要求対送信通知のみを保持します。 したがって、ローカル プログラムは、パートナー トランザクション プログラム (TP) によって明示的に処理されるよりも多くの Request_To_Send 呼び出しを発行できます。