WinAsyncAPPC 函式為所有 APPC 動詞提供非同步的入口點。 如果你執行應用程式並想用 Windows 帳號來做非同步動詞補全,請用這個函式代替動詞的阻塞版本。
語法
HANDLE WINAPI WinAsyncAPPC(
HANDLE hWnd,
Long lpVcb
);
參數
hWnd
一個用於訊息發佈的視窗代碼,當 APPC 動詞完成時通知應用程式。
lpVcb
指向動詞控制區塊。
傳回值
回傳值則指定非同步請求是否成功。 若函式成功,回傳值為非同步任務句柄。 若函數未成功,則回傳為零。
當此函式回傳成功值時,並不代表 APPC 呼叫最終會成功返回。 它僅表示 APPC 函式庫可透過訊息發布非同步嘗試呼叫。
備註
關於如何在交易程式(TP)中使用此動詞的範例,請參見發送與接收範例 TP(SENDRECV.C 位於 APPC 資料夾中)被包含在 SDK 中。
在基本對話中能阻擋的 APPC 動詞如下:
-
用於映射對話且能阻擋的 APPC 動詞如下:
-
使用動詞的同步或非同步版本時,應用程式一次只能在對話中處理一個未完成的功能。 嘗試啟動第二個功能時會出現錯誤代碼AP_CONV_BUSY。
前述段落的例外情況如下:
-
為了充分利用非同步支援,非同步發出的 RECEIVE_AND_WAIT 與 MC_RECEIVE_AND_WAIT 動詞被修改為與 RECEIVE_AND_POST 及 MC_RECEIVE_AND_POST 動詞相似。 具體來說,雖然其中一個動詞的非同步版本是優異的,但以下動詞可在同一對話中出現:
DEALLOCATE (AP_ABEND_PROG、AP_ABEND_SVC或AP_ABEND_TIMER)
-
這使得應用程式,特別是 5250 模擬器,能夠使用非同步 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。 建議您使用此功能以實現完整的非同步支援。
當非同步操作完成後,應用程式的視窗 hWnd 會接收由 RegisterWindowMessage 回傳的訊息,輸入字串為「WinAsyncAPPC」。 wParam 參數包含原始函式呼叫回傳的非同步任務句柄。 lParam 參數包含原始的 VCB 指標,並可被解引用以決定最終的回傳碼。
作為 Windows APPC 定義的一部分, WinAPPCCancelAsyncRequest 允許應用程式取消任何非同步的 APPC 動作;但會適當地終止相關對話或TP。 任何未完成的操作都會以 AP_CANCELED 作為返回碼返回。
若函式成功返回,當操作完成或對話取消時,會向應用程式發布 WinAsyncAPPC 訊息。