共用方式為


程序設計考慮

本主題摘要說明在 Windows作系統上使用 APPC 開發交易程式 (TP) 的相關信息:

位元組排序
WINAPPC.H 和 WINCSV.H 中定義的常數值依賴於所使用硬體的位元組順序。 巨集可用來將常數設定為正確的值。

根據預設,會使用 Intel 的小端位元組順序,即 16 位元值的低位元組在前,高位元組在後。 不過,在定義內嵌巨集時,WINAPPC.H 和 WINCSV.H 中使用的 NON_INTEL_BYTE_ORDER 巨集不會翻轉常數的位元組順序。 動詞控制區塊中的非常數輸入參數(例如長度、指標等)一律為原生格式。

例如,AP_PARAMETER_CHECK的主要傳回碼定義為具有 0x0001 值。 視環境而定(位元組排序),常數AP_PARAMETER_CHECK可能或可能不會0x0001。 某些格式將值定義為如同它在記憶體中呈現,其他格式則將其定義為2位元組變數。 因為您無法假設應用程式一律使用提供的常數,而不是硬線值,所以您可以定義巨集來交換位元組。 以下是使用巨集指令的示範:

/* when NON_INTEL_BYTE_ORDER is specified, the APPC_FLIPI macro defined in WINAPPC.H macro becomes */  
#define APPC_FLIPI(x)    (x)  
  
/* otherwise this macro flips bytes by defining */  
#define APPC_FLIPI(X) APPC_MAKUS(APPC_HI_UC(X),APPC_LO_UC(X))  
  
/* the AP_PARAMETER_CHECK macro is now defined using the APPC_FLIPI macro */  
#define AP_PARAMETER_CHECK APPC_FLIPI (0X0001)      /* X '0001' */  

活動
若要以異步方式接收數據,事件句柄會在 VCB 的號誌字段中傳遞。 傳遞至 APPC 時,此事件必須處於非信號狀態,且句柄必須具有 EVENT_MODIFY_STATE 存取權來修改事件的狀態。

圖書館名稱
為了支援相同電腦上的 Win16 和 Win32 API 連結庫共存,Win32 DLL 名稱已變更。

舊 DLL 名稱 新的 DLL 名稱
WINAPPC.DLL WAPPC32.DLL
WINCSV.DLL WINCSV32.DLL

新的 DLL 名稱應該用於僅要在主機整合伺服器上執行的 Win32 型應用程式。

限制
針對 Windows 作業系統,每個程序允許的並行通用服務動詞(CSV)數目為 64。 每個線程只能有一個動詞是同步的(封鎖)。

使用APPC時,每個進程的同時交談數目上限為15,000。 每個進程最多支援 15,000 個同時 TP。

多個線程
TP 可以有多個發出動詞的線程。 Windows APPC 會為以 Windows 為基礎的多線程進程提供支援。 進程包含一或多個執行的線程。 線程的所有參考都會參考多線程 Windows 環境中的實際線程。

除了 RECEIVE_AND_POSTMC_RECEIVE_AND_POSTRECEIVE_AND_WAITMC_RECEIVE_AND_WAIT 之外,每次交談最多只能有一個交談動詞在運行;然而,對於其他交談則可以使用不同的動詞。 此指導方針也適用於 TP 動詞和 TP。 雖然可以發出多個 TP 動詞,但在 TP 上一次只能發出一個 TP 動詞。 這同時適用於使用異步呼叫的多線程應用程式和單個線程應用程式。

包裝
針對效能考慮,VCB 不會封裝。 VCB 結構中,除第一個元素外的成員元素會根據成員類型的大小或 DWORD (4 字節)界限對齊,以較小者為準。 因此,DWORD 對齊在 DWORD 邊界上,WORD 對齊在 WORD 邊界上,而 BYTE 對齊在 BYTE 邊界上。 例如,這表示主要與次要返回碼之間存在 2 個字節的間距。 因此,VCB 中的元素只能使用所提供的結構來存取。

結構和聯合成員對齊的這個選項是 Microsoft C/C++ 編譯程序的預設行為。 為了與提供的邏輯單元應用程式 (LUA) 連結庫相容,在使用其他 C/C++ 編譯程式時,或在使用 Microsoft 編譯程式時明確指定結構對齊選項時,請務必使用對等結構和等位成員封裝選項。

註冊和取消註冊應用程式
所有 Windows APPC 應用程式都必須在會話開頭呼叫 WinAPPCStartup ,才能在工作階段結束時註冊應用程式和 WinAPPCCleanup ,以取消註冊應用程式。

所有 Windows CSV 應用程式都必須在工作階段開始時呼叫 Windows SNA 擴充 功能 WinCSVStartup ,以註冊 應用程式,並在 會話完成時取消註冊應用程式。

運行時間連結
若要讓 TP 在運行時動態連結至 APPC,TP 必須發出以下呼叫:

  • LoadLibrary 可載入動態連結庫WINAPPC.DLL或WAPPC32.DLL。

  • GetProcAddress 在 DLL 的所有所需進入點上指定 APPC,例如 APPCWinAsyncAPPCWinAPPCStartup 和 WinAPPCCleanup

    若要在執行時間使 TP 動態鏈結到 CSV,TP 必須呼叫以下指令:

  • LoadLibrary 可載入 windows CSV 的動態連結庫WINCSV.DLL或WINCSV32.DLL。

  • GetProcAddress 在 DLL 的所有所需進入點上指定 CSV,例如 ACSSVCWinAsyncCSVWinCSVStartup 和 WinCSVCleanup

    當不再需要 APPC 或 CSV 連結庫時,TP 必須發出 FreeLibrary 呼叫。

    讓給其他元件
    因為 Windows 環境是多執行緒的,因此不需要讓出資源給其他元件。