Receiving the Asynchronous Reply
After it is notified that the server has sent a reply, the client calls RpcAsyncCompleteCall with the asynchronous handle so that it can receive the reply. When RpcAsyncCompleteCall has completed successfully, the Reply parameter points to a buffer that contains the return value of the remote function. Any buffers supplied by the client program as [out] or [in, out] parameters to the asynchronous remote function contain valid data. If the client calls RpcAsyncCompleteCall before the server has sent the reply, that call will fail and return a value of RPC_S_ASYNC_CALL_PENDING.
If your client program uses I/O completion ports or events for notification, it must call CloseHandle to release the port or handle when it no longer needs them.