RpcAsyncCompleteCall 函数 (rpcasync.h)

客户端和服务器调用 RpcAsyncCompleteCall 函数以完成异步远程过程调用。

语法

RPC_STATUS RpcAsyncCompleteCall(
  PRPC_ASYNC_STATE pAsync,
  void             *Reply
);

parameters

pAsync

指向包含异步调用信息的 RPC_ASYNC_STATE 结构的指针。

Reply

指向包含远程过程调用的返回值的缓冲区的指针。

返回值

除了以下值之外, RpcAsyncCompleteCall 还可以返回任何常规 RPC 或特定于应用程序的错误。

含义
RPC_S_OK
调用已成功完成。
RPC_S_INVALID_ASYNC_HANDLE
异步调用句柄无效。
RPC_S_ASYNC_CALL_PENDING
调用尚未完成。
RPC_S_CALL_CANCELLED
呼叫已取消。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

完成异步 RPC 调用。 客户端和服务器都调用此函数。

客户端: 答复 指向将接收答复的缓冲区。 如果客户端在答复到达之前调用此函数,则调用将返回RPC_S_ASYNC_CALL_PENDING。 缓冲区必须有效,并且必须足够大才能接收返回值。 如果此调用成功,则 [out][in,out] 参数有效。 如果调用未返回RPC_S_ASYNC_CALL_PENDING,则此 RpcAsyncCompleteCall 调用是 RPC 调用的最终调用。 调用此函数后,无论成功或失败,都会释放 RPC 运行时分配的所有资源。 对 RpcAsyncCompleteCallRpcAsyncCancelCall 函数的后续调用具有未定义的结果,直到启动对 RPC_ASYNC_STATE 结构的新调用。

服务器: 答复 指向包含需要发送到客户端的返回值的缓冲区。 如果函数是使用返回类型声明的,则只需为 Reply 设置有效的缓冲区。 在调用 RpcAsyncCompleteCall 之前,必须更新 [out][in,out] 参数。 调用 RpcAsyncCompleteCall 返回后,不应接触这些参数和异步句柄。 服务器上 RpcAsyncCompleteCall 的调用是最终的。 如果 RpcAsyncCompleteCall 函数调用失败,RPC 运行时将释放参数。

仅当 rpcAsyncCompleteCall 的返回值RPC_S_OK时,任何 [out] 参数(包括 [comm_status][fault_status] 参数)才有效。

要求

   
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 rpcasync.h (包括 Rpc.h)
Library Rpcrt4.lib
DLL Rpcrt4.dll

请参阅

异步 RPC

错误处理

RPC_ASYNC_STATE

RpcAsyncAbortCall

RpcAsyncCancelCall

RpcAsyncGetCallHandle

RpcAsyncGetCallStatus

RpcAsyncInitializeHandle

RpcServerTestCancel