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 ランタイムによって割り当てられたすべてのリソースが解放されます。 RpcAsyncCompleteCall または RpcAsyncCancelCall 関数の後続の呼び出しでは、RPC_ASYNC_STATE構造体の新しい呼び出しが開始されるまで、未定義の結果になります。

サーバー: 応答 は、クライアントに送信する必要がある戻り値を含むバッファーを指します。 関数が戻り値の型で宣言されている場合にのみ 、Reply の有効なバッファーを設定する必要があります。 RpcAsyncCompleteCall の呼び出しが行われる前に、[out] パラメーターと [in,out] パラメーターを更新する必要があります。 これらのパラメーターと非同期ハンドルは、 RpcAsyncCompleteCall の呼び出しが戻った後にタッチしないでください。 サーバーでの RpcAsyncCompleteCall の呼び出しは最終的です。 RpcAsyncCompleteCall 関数呼び出しが失敗した場合、RPC ランタイムはパラメーターを解放します。

[comm_status] パラメーターと [fault_status] パラメーターを含む [out] パラメーターは、RpcAsyncCompleteCall の戻り値がRPC_S_OKされている場合にのみ有効です。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリ |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