异步函数

在从函数调用返回 TAPI 2.x 后,在函数调用中异步完成其处理部分的作,并在独立执行线程中执行该作的其余部分执行。 为了确保调用的处理完成,服务提供商会将请求向系统中的另一个活动实体(例如 LAN 服务器、外接程序硬件、交换机或网络)向量,然后返回到应用程序。 此时,将负错误结果或正请求标识符返回到应用程序。

在异步完成时(服务提供商已收到硬件中断,这意味着必须传递消息),服务提供商调用 TAPISRV 并报告“事件 X 刚刚发生。 向所有相关应用程序传递适当的消息。当 TAPISRV 收到此消息时,它会将消息转发到 TAPI 动态链接库,在应用程序的进程中,该库反过来又会发布窗口消息、向 I/O 完成端口发出信号,或者根据应用程序在 lineInitializeExphoneInitializeEx中选择的消息通知方案。

作的异步部分完成后,会将 LINE_REPLY(或 PHONE_REPLY)消息发送到应用程序。 此消息包含函数调用返回的请求标识符作为其参数之一。 此请求标识符允许应用程序确定哪些原始请求已完成。 (应用程序应记住正在进行的所有请求的请求标识符,以便正确处理回复消息。LINE_REPLY(或PHONE_REPLY)消息的第二个参数是异步返回值。 如果作成功完成,则为负值(对于错误)或零。 对于异步作,任何返回值都可以作为函数返回的一部分或作为LINE_REPLY或PHONE_REPLY消息中的 dwParam2 参数返回。 指示成功的值 0 仅在LINE_REPLY消息中返回,并且永远不会作为函数的返回值返回。

初始化函数(lineInitializeExphoneInitializeEx) 告诉 TAPI 如何将这些消息发送到应用程序。

注意

在某些情况下,如果多线程应用程序从应用程序初始化线路或电话设备的线程以外的线程调用异步函数,则应用程序可能会在异步函数返回之前接收 LINE_REPLYPHONE_REPLY 消息。 在这种情况下,应用程序应保存消息参数,并等待异步函数返回,并在处理消息之前知道请求标识符。