Windows CPI-C 非同期サポート

呼び出しを発行し、呼び出しが完了するまで制御を回復しないプログラムは、他の操作を実行できません。 ブロックと呼ばれるこの種類の操作は、多くのクライアントからの複数の要求を処理するように設計されたサーバー アプリケーションには適していません。 非同期呼び出しの完了は、アプリケーションが他のプロセスを続行できるように、すぐに最初の呼び出しを返します。

Windows Common Programming Interface for Communications (CPI-C) のサポートは非同期通信に関連しており、次の呼び出しと拡張機能が含まれています。

Set_Processing_Mode (CPI-C)

Specify_Windows_Handle (CPI-C)

Wait_For_Conversation (CPI-C)

WinCPICExtractEvent

WinCPICIsBlocking

WinCPICSetBlockingHook

WinCPICSetEvent

WinCPICUnhookBlockingHook

非同期動詞補完には、Microsoft Windows の 2 つのメソッドを使用できます。

  • ウィンドウ ハンドルを使用したメッセージの投稿。

  • Win32 イベントを待機しています。

    従来のメソッドでは、ウィンドウ ハンドルにポストされたメッセージを使用して、動詞の完了をアプリケーションに通知します。 この方法は、Windows 3 をサポートするために以前のバージョンの製品で使用されていました。x

    メッセージの投稿を使用した非同期サポートは 、Set_Processing_Mode (CPI-C) 呼び出しに追加され、ウィンドウ ハンドルでの呼び出しの完了をアプリケーションに通知できます。 "WinAsyncCPIC" を文字列として RegisterWindowsMessage を呼び出すと、アプリケーションは、呼び出しの完了をアプリケーションに通知するウィンドウ ハンドルを渡します。 その後、アプリケーションは CPI-C 呼び出しを行い、完了すると、メッセージが渡されたウィンドウ ハンドルにポストされ、呼び出しが完了したことをアプリケーションに通知します。

    非同期 Receive 呼び出しを除き、保留中の間に他の特定の呼び出しを発行することができる場合、会話には同時に 1 つの未完了の操作しか含めることができません。 非同期受信コールの使用の詳細については、「非同期コール完了の使用方法」を参照してください。 不完全な操作の場合、プログラムは Wait_For_Conversation を発行して、その完了をテストしたり Cancel_Conversation を発行して会話と不完全な操作を終了したりできます。

    Host Integration Server では、通知に Win32 イベントを使用する 2 つ目の方法がサポートされています。

    WinCPICSetEvent を使用してイベントが会話に登録されている場合、アプリケーションは Win32 WaitForSingleObject または WaitForMultipleObjects 関数を呼び出して、動詞の完了の通知を受け取るのを待機できます。

    Windows CPI-C に必要な Windows 拡張機能は、初期化 (WinCPICStartup) と終了 (WinCPICCleanup) 用のみです。 アプリケーションによっては、非同期動詞補完を処理するための他の Windows 拡張機能が役立ちますが、必須ではありません。 Windows CPI-C 非同期呼び出しと Windows 拡張機能を使用する方法の例については、「 非同期呼び出しの完了」を参照してください。 すべての Windows CPI-C 呼び出しと拡張機能の詳細については、「Windows 環境の CPI-C 呼び出し拡張機能」を参照してください。