WinAsyncAPPC
WinAsyncAPPC 函数为所有 APPC 谓词提供异步入口点。 如果运行应用程序并想要使用 Windows 句柄的消息发布进行异步谓词完成,请使用此函数而不是谓词的阻塞版本。
语法
HANDLE WINAPI WinAsyncAPPC(
HANDLE hWnd,
Long lpVcb
);
参数
hWnd
将用于发布消息的窗口句柄,用于在 APPC 谓词完成时通知应用程序。
lpVcb
指向谓词控制块的指针。
返回值
返回值指定异步请求是否成功。 如果函数成功,则返回值为异步任务句柄。 如果函数不成功,则返回零。
当此函数返回成功值时,这并不表示 APPC 调用最终将成功返回。 它仅指示 APPC 库可以尝试使用通知消息发布异步方式调用 APPC。
注解
有关如何在事务程序中使用此谓词的示例 (TP) ,请参阅发送和接收示例 TP (SENDRECV。位于 SDK 中包含的 APPC 文件夹中) C。
在可以阻止的基本对话中使用的 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 消息。