次の方法で共有


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] パラメーターを含むすべての [出力] パラメーターは、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