Windows の CPI-C の考慮事項

このトピックでは、オペレーティング システムに基づいてプログラムを開発する際に念頭に置Windows概要を示します。

メッセージの投稿を使用した非同期完了通知
非同期操作が完了すると、アプリケーション ウィンドウ hwndNotifyRegisterWindowMessage から返されたメッセージを受信し、入力文字列として "WinAsyncCPIC" を指定します。 wParam 値には完了conversation_return_codeの値が格納されます。 その値は、最初に発行された操作によって異なる。 IParam 引数には、元の関数CM_PTR指定されたconversation_IDに対する値が格納されます。

Win32 イベントを使用した非同期完了® 通知
非ブロック会話で動詞が発行された場合、非同期的にCM_OPERATION_INCOMPLETE場合は、その動詞を返します。 イベントが会話に登録されている場合、アプリケーションは WaitForSingleObject または WaitForMultipleObjects を呼び出して、動詞の完了を通知することができます。 WinCPICExtractEvent を使用すると、通信用の共通プログラミング インターフェイス (CPI-C) アプリケーションでこのイベント ハンドルを決定できます。 動詞が完了したら、非同期動詞のリターン コードを決定Wait_For_Conversationを呼び出す必要があります。 関数 Cancel_Conversation呼び出して、操作と会話自体を取り消します。

アプリケーションは、他の API と同様に、イベントをリセットする必要があります。

イベントが登録されていない場合、非同期動詞は現在のように完了します。これは、アプリケーションが CPI-C ライブラリに登録したウィンドウにメッセージを投稿することで行います。

バイトの順序付け
既定では、Intel バイトの順序付けが使用されます。 インライン環境の場合は、NON_INTEL_BYTE_ORDERを定義すると、定数に必要なすべての反転が実行されます。 動詞制御ブロック (VCB) の非コンストタント入力パラメーター (長さ、ポインターなど) は常にネイティブ形式です。

イベント
データを非同期的に受信するために、イベント ハンドルは VCB のセマフォ フィールドに渡されます。 このイベントは CPI-C に渡された場合は非EVENT_MODIFY_STATEである必要があります。

ライブラリ名
Win32® DLL 名はWINCPIC32.DLL。

複数のスレッド
トランザクション プログラム (TP) には、動詞を発行する複数のスレッドを含めできます。 Windows CPI-C では、マルチスレッドのアプリケーション ベースのプロセスWindowsが作成されます。 プロセスには、1 つ以上の実行スレッドが含まれる。 スレッドへのすべての参照は、マルチスレッド 環境内の実際のスレッドWindowsします。

梱包
パフォーマンス上の理由から、VCB はパックされません。 その結果、DWORD は DWORD 境界、WORD の場合は WORD、BYTEs では BYTEs になります。 指定された構造体を使用して、VCB にアクセスする必要があります。

実行時のリンク
実行時に TP を CPI-C に動的にリンクするには、TP で次のコマンドを実行する必要があります。

  • WinCPIC 用のライブラリWINCPIC.DLLまたはWINCPIC32.DLL動的に読み込む LoadLibrary。

  • GetProcAddress を使用して、WINCPIC をダイナミック リンク ライブラリ (DLL) への目的のエントリ ポイントとして指定します。

  • CPI-C ライブラリが不要になった場合の FreeLibrary

    同時会話
    プログラムは、プロセスあたり 64 件の会話に同時に参加できます。

    アプリケーションの終了
    このWindowsでは、CPI-C はアプリケーションの終了を通知できません。 そのため、アプリケーションを閉じる必要がある場合 (たとえば、ユーザーから ALT + F4 の結果として WM_CLOSE メッセージを受信する場合)、アプリケーションは WinCPICCleanup を呼び出す必要があります。

    他のコンポーネントへの生成
    CPI-C および Common Service Verbs (CSV) を処理する場合、SnaBase などの別のコンポーネントがメッセージを受信してアプリケーションに渡すには、ライブラリ コードを生成する必要がある場合があります。 これを実現するには、WinCPICSetBlockingHook Windows WinCPICUnhookBlockingHook の拡張機能を使用します。

    WinCPICSetBlockingHook を使用すると、WINDOWS CPI-C 実装を使用して、新しい関数を使用して CPI-C 関数呼び出しをブロックできます。 WinCPICSetBlockingHook を呼び出す方法:

FARPROC WINAPI WinCPICSetBlockingHook (FARPROC 1pBlockFunc)  

WinCPICUnhookBlockingHook は、インストールされている以前のブロック フックを削除し、既定のブロック メカニズムを再インストールします。 WinCPICUnhookBlockingHook を呼び出す方法:

BOOL WINAPI WinCPICUnhookBlockingHook (void)