WinAsyncAPPCEx 関数は、すべての APPC 動詞の非同期エントリ ポイントを提供します。 イベントを使用して同じスレッドで複数のセッションを処理できるようにするには、動詞のブロック バージョンの代わりにこの関数を使用します。 この動詞は Microsoft Windows でのみサポートされ、Win32® イベントを使用します。
構文
HANDLE WINAPI WinAsyncAPPCEx(
HANDLEevent_handle,
longlpVcb);
パラメーター
event_handle
Win32 イベントを使用したイベント通知に使用されるハンドル。
lpVcb
動詞制御ブロックへのポインター。
戻り値
戻り値は、非同期解決要求が成功したかどうかを指定します。 関数が成功した場合、戻り値は非同期タスク ハンドルです。 関数が成功しなかった場合は、0 が返されます。
この関数が正常な値で返された場合、これは APPC 呼び出しが最終的に正常に返されることを示すものではありません。 これは、APPC ライブラリが通知にイベントを使用して APPC 呼び出しを非同期的に試みることができることを示すだけです。
注釈
この関数は、Win32 API の WaitForSingleObject または WaitForMultipleObjects で使用することを目的としています。 これらの関数については、Microsoft Platform SDK ドキュメントの「リファレンス」セクションで説明されています。
マルチスレッド TP でこの動詞を使用する方法の例については、マルチスレッド送受信サンプル TP (MRCV) を参照してください。C、MSEND。C と MSENDRCV。SDK に含まれる MSENDRCV フォルダー内の C)。
ブロックできる基本的な会話で使用される APPC 動詞は次のとおりです。
-
ブロックできるマップされた会話で使用される APPC 動詞は次のとおりです。
-
動詞の同期バージョンまたは非同期バージョンを使用する場合、アプリケーションは一度に 1 つの会話で 1 つの未処理の関数しか実行できません。 2 つ目の関数を開始しようとすると、エラー コードがAP_CONV_BUSY。
注
前の段落の例外は、 RECEIVE_AND_POST、 MC_RECEIVE_AND_POST、 RECEIVE_AND_WAIT、 およびMC_RECEIVE_AND_WAITです。
注
非同期サポートを完全に使用できるように、非同期的に発行された RECEIVE_AND_WAIT および MC_RECEIVE_AND_WAIT 動詞は 、RECEIVE_AND_POST および MC_RECEIVE_AND_POST 動詞のように動作するように変更されています。 具体的には、これらの動詞の 1 つの非同期バージョンは未処理ですが、同じ会話で次の動詞を発行できます。
DEALLOCATE (AP_ABEND_PROG、AP_ABEND_SVC、またはAP_ABEND_TIMER)
TEST_RTS または MC_TEST_RTS
注
これにより、アプリケーション (特にサーバー アプリケーション) は、非同期 RECEIVE_AND_WAIT または MC_RECEIVE_AND_WAIT を使用してデータを受信できます。 RECEIVE_AND_POST、MC_RECEIVE_AND_POST、RECEIVE_AND_WAIT、またはMC_RECEIVE_AND_WAITは未処理ですが、SEND_ERROR、MC_SEND_ERROR、REQUEST_TO_SEND、またはMC_REQUEST_TO_SENDを引き続き使用できます。 この機能は、完全な非同期サポート、特に同じスレッドでの複数の会話のサポートに使用することをお勧めします。
非同期操作が完了すると、イベントのシグナル通知を通じてアプリケーションに通知されます。 イベントのシグナル通知が行われたら、エラー状態がないか、APPC のプライマリ リターン コードと動詞制御ブロック内のセカンダリ リターン コードを調べます。