RpcAsyncCompleteCall 関数 (rpcasync.h)
クライアントとサーバーは RpcAsyncCompleteCall 関数を呼び出して、非同期リモート プロシージャ 呼び出しを完了します。
構文
RPC_STATUS RpcAsyncCompleteCall(
PRPC_ASYNC_STATE pAsync,
void *Reply
);
パラメーター
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 ランタイムはパラメーターを解放します。
[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 |