WinAsyncAPPCEx 函数为所有 APPC 谓词提供异步入口点。 使用此函数而不是谓词的阻塞版本,以允许使用事件在同一线程上处理多个会话。 此谓词仅在 Microsoft Windows 上受支持,并使用 Win32® 事件。
Syntax
HANDLE WINAPI WinAsyncAPPCEx(
HANDLEevent_handle,
longlpVcb);
参数
event_handle
用于使用 Win32 事件的事件通知的句柄。
lpVcb
指向谓词控制块的指针。
返回值
返回值指定异步解析请求是否成功。 如果函数成功,则返回值为异步任务句柄。 如果函数未成功,则返回零。
当此函数返回具有成功值时,这并不指示 APPC 调用最终将成功返回。 它只指示 APPC 库可以使用事件以异步方式尝试使用事件进行通知调用。
注解
此函数适用于 Win32 API 中的 WaitForSingleObject 或 WaitForMultipleObjects 。 Microsoft平台 SDK 文档的“参考”部分介绍了这些函数。
有关如何在多线程 TP 中使用此谓词的示例,请参阅多线程发送和接收示例 TP (MRCV)。C、MSEND。C 和 MSENDRCV。位于 SDK 中包含的 MSENDRCV 文件夹中的 C。
可在基本对话中使用的 APPC 谓词如下所示:
-
映射对话中使用的 APPC 谓词如下所示:
-
使用谓词的同步或异步版本时,应用程序一次只能有一个未完成的函数。 尝试启动第二个函数会导致错误代码AP_CONV_BUSY。
注释
上一段的例外情况是 RECEIVE_AND_POST、 MC_RECEIVE_AND_POST、 RECEIVE_AND_WAIT和 MC_RECEIVE_AND_WAIT。
注释
为了允许完全使用异步支持,已更改异步发出的 RECEIVE_AND_WAIT 和 MC_RECEIVE_AND_WAIT 谓词,使其像 RECEIVE_AND_POST 和 MC_RECEIVE_AND_POST 谓词一样。 具体而言,虽然其中一个谓词的异步版本未完成,但可以在同一对话中发出以下谓词:
DEALLOCATE (AP_ABEND_PROG、AP_ABEND_SVC或AP_ABEND_TIMER)
注释
这允许应用程序(特别是服务器应用程序)使用异步 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。 建议将此功能用于完全异步支持,特别是支持同一线程上的多个对话。
异步操作完成后,应用程序将通过事件信号通知。 发出事件信号后,检查谓词控制块中的 APPC 主返回代码和辅助返回代码,了解任何错误条件。