适用于 Windows 环境的 APPC 扩展
本部分介绍允许异步通信的 Windows 高级程序到程序通信 (APPC) 的 API 扩展。 当函数在请求完成之前返回时,会发生异步通信。 稍后请求完成时,应用程序会收到通知。
在 Microsoft® Windows 下®,有三种方法可用于使用 APPC API 进行异步通信:
使用窗口句柄发布消息。
正在等待 Win32® 事件。
使用 Win32 I/O 完成端口。
第一种方法使用发布到窗口句柄的消息来通知应用程序谓词完成。 Microsoft Windows 3.x 支持使用窗口句柄和消息的此方法。 每个 APPC 应用程序都有一个这样的窗口,与会话数无关。 每个 APPC 对话可以随时有一个未完成的异步谓词。 当谓词完成时,发布到窗口的将原始调用返回的异步任务句柄和指向已完成的谓词控制块(包含谓词的返回代码)的指针作为参数。
本部分所述的使用窗口句柄和消息发布的扩展 (WinAsyncAPPC) 是为从版本 3.0 到 Windows 最新版本的所有 Microsoft Windows 实现和版本而设计的。 它们为 16 位 Windows 操作环境中的 Windows 编程和最佳应用程序性能提供了兼容性。
支持使用 Win32 事件进行通知的第二种方法。 本部分所述的使用 Win32 事件的扩展 (WinAsyncAPPCEx) 仅在 Windows 上运行,并在 32 位 Windows 操作环境中提供最佳应用程序性能。 如果事件已注册到会话中,则应用程序可以调用 Win32 WaitForSingleObject 或 WaitForMultipleObjects 函数,等待收到谓词完成的通知。
Windows 支持使用 Win32 I/O 完成端口进行通知的第三种方法。 本部分所述的使用 I/O 完成端口的扩展 (WinAsyncAPPCIOCP) 仅在 Windows 上运行,并在 32 位 Windows 操作环境中提供最佳应用程序性能。 如果已使用 CreateIoCompletionPort 创建了 I/O 完成端口,则应用程序可以调用 Win32 GetQueuedCompletionStatus 函数,等待收到谓词完成的通知。
Windows APPC 允许基于 Windows 的多线程进程。 一个进程包含一个或多个执行线程。 本文档中对线程的所有引用都引用多线程 Windows 环境中的实际线程。
本部分为每个扩展提供函数的定义、语法、返回和使用该函数的备注。