WinAPPCCancelBlockingCall
WinAPPCCancelBlockingCall 函数取消其线程的任何未完成的阻塞操作。 取消的任何未完成的阻止调用都将导致生成 WAPPCCANCEL 的错误代码。
语法
BOOL WINAPI WinAPPCCancelBlockingCall(
void
);
返回值
返回值指定取消请求是否成功。 如果值为零,则表示请求已取消。 否则,该值如下所示:
WAPPCINVALID
指示没有未完成的阻止调用的错误代码。
注解
例如,如果未完成的谓词与会话 (相关, SEND_DATA 或 RECEIVE_AND_WAIT) ,则会清除该谓词并关闭会话。 如果谓词与 TP (相关,例如 ,RECEIVE_ALLOCATE 或 TP_STARTED) ,则 TP 结束。 在这两种情况下,虽然 实现会尽可能干净地关闭会话和会话,但它不会刷新发送缓冲区、等待确认等。 此调用是同步的,在上述处理完成后,函数即完成。
在 Microsoft Windows 中,多线程应用程序可以有多个未完成的阻塞操作,但每个线程只能执行一个阻塞操作。 为了区分多个未完成的调用, WinAPPCCancelBlockingCall 取消当前或调用应用程序线程(如果存在)上的未完成操作;否则会失败。 默认情况下,在 Windows 中,Windows APPC 在某个操作未完成时挂起调用应用程序线程。 因此,发起阻止操作的线程不会 (重新获得控制权,因此,除非使用 WinAPPCSetBlockingHook 为线程注册了阻止挂钩,否则将无法发出对 WinAPPCCancelBlockingCall) 的调用。