RpcAsyncCompleteCall 函数 (rpcasync.h)
客户端和服务器调用 RpcAsyncCompleteCall 函数以完成异步远程过程调用。
语法
RPC_STATUS RpcAsyncCompleteCall(
PRPC_ASYNC_STATE pAsync,
void *Reply
);
parameters
pAsync
指向包含异步调用信息的 RPC_ASYNC_STATE 结构的指针。
Reply
指向包含远程过程调用的返回值的缓冲区的指针。
返回值
除了以下值之外, RpcAsyncCompleteCall 还可以返回任何常规 RPC 或特定于应用程序的错误。
值 | 含义 |
---|---|
|
调用已成功完成。 |
|
异步调用句柄无效。 |
|
调用尚未完成。 |
|
呼叫已取消。 |
注解
完成异步 RPC 调用。 客户端和服务器都调用此函数。
客户端: 答复 指向将接收答复的缓冲区。 如果客户端在答复到达之前调用此函数,则调用将返回RPC_S_ASYNC_CALL_PENDING。 缓冲区必须有效,并且必须足够大才能接收返回值。 如果此调用成功,则 [out] 和 [in,out] 参数有效。 如果调用未返回RPC_S_ASYNC_CALL_PENDING,则此 RpcAsyncCompleteCall 调用是 RPC 调用的最终调用。 调用此函数后,无论成功或失败,都会释放 RPC 运行时分配的所有资源。 对 RpcAsyncCompleteCall 或 RpcAsyncCancelCall 函数的后续调用具有未定义的结果,直到启动对 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 |