WinAsyncAPPCEx
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。
Note
上記の段落の例外は、 RECEIVE_AND_POST、 MC_RECEIVE_AND_POST、 RECEIVE_AND_WAIT、 およびMC_RECEIVE_AND_WAITです。
Note
非同期サポートを完全に使用できるように、非同期に発行された 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
Note
これにより、アプリケーション (特にサーバー アプリケーション) で非同期 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 プライマリ リターン コードとセカンダリ リターン コードを調べます。