Share via


RpcAsyncCompleteCall 函式 (rpcasync.h)

用戶端和伺服器會呼叫 RpcAsyncCompleteCall 函式,以完成非同步遠端程序呼叫。

語法

RPC_STATUS RpcAsyncCompleteCall(
  PRPC_ASYNC_STATE pAsync,
  void             *Reply
);

參數

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 執行時間會釋放參數。

任何 [ out] 參數,包括 [comm_status][fault_status] 參數,只有在 RpcAsyncCompleteCall 的傳回值RPC_S_OK時才有效。

需求

   
最低支援的用戶端 Windows 2000 專業版 [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows 2000 Server [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 rpcasync.h (包含 Rpc.h)
程式庫 Rpcrt4.lib
Dll Rpcrt4.dll

另請參閱

非同步 RPC

錯誤處理

RPC_ASYNC_STATE

RpcAsyncAbortCall

RpcAsyncCancelCall

RpcAsyncGetCallHandle

RpcAsyncGetCallStatus

RpcAsyncInitializeHandle

RpcServerTestCancel