RpcCancelThread 函数 (rpcdce.h)

RpcCancelThread 函数取消线程。 RpcCancelThread 函数不应用于取消异步 RPC 调用;相反,请使用 RpcAsyncCancelCall 函数取消异步 RPC 调用。

语法

RPC_STATUS RpcCancelThread(
  void *Thread
);

parameters

Thread

要取消的线程的句柄。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_ACCESS_DENIED
线程句柄没有权限。 线程句柄必须正确设置THREAD_SET_CONTEXT,函数才能正确执行。
RPC_S_CANNOT_SUPPORT
由 MS-DOS 或 Windows 3.x 客户端调用。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcCancelThread 函数允许一个客户端线程取消另一个客户端线程上正在进行的 RPC。 调用函数时,服务器运行时会通知取消操作。 服务器存根可以通过调用 RpcTestCancel 来确定调用是否已取消。 如果已取消调用,则服务器存根应清理并将控制权返回给客户端。

RpcCancelThread 函数不能用于取消发出静态回调的调用。 不要取消可能调用使用 IDL 文件中 的 [callback] 属性声明的函数的远程过程调用。

默认情况下,客户端将永远等待服务器在取消后返回控制权。 若要减少此时间,请调用 RpcMgmtSetCancelTimeout,指定等待响应的秒数。 如果服务器在此间隔内未返回,则调用在客户端失败,并 出现RPC_S_CALL_FAILED 异常。 服务器存根继续运行。

如果使用命名管道协议 (ncacn_np),则必须指定有限超时。

可以将 RpcCancelThread 与任何面向连接的协议 (ncacn_*) 以及 除 ncadg_mqncalrpc 以外的任何数据报协议一起使用。

注意 Windows XP/2000 RpcCancelThread 函数不适用于 ncacn_httpRpcCancelThread 函数支持 Windows Server 2003 或更高版本操作系统和 Windows XP 上使用 Service Pack 1 (SP1) 及更高版本上的ncacn_http。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 rpcdce.h (包括 Rpc.h)
Library Rpcrt4.lib
DLL Rpcrt4.dll

请参阅

RpcTestCancel

ncacn_http

ncadg_mq

ncalrpc