#include "rpc_binding.h"
#include "rpc_message.h"
+#include "ndr_stubless.h"
WINE_DEFAULT_DEBUG_CHANNEL(rpc);
#define RPC_ASYNC_SIGNATURE 0x43595341
+static inline BOOL valid_async_handle(PRPC_ASYNC_STATE pAsync)
+{
+ return pAsync->Signature == RPC_ASYNC_SIGNATURE;
+}
+
/***********************************************************************
* RpcAsyncInitializeHandle [RPCRT4.@]
*
*/
RPC_STATUS WINAPI RpcAsyncCompleteCall(PRPC_ASYNC_STATE pAsync, void *Reply)
{
- FIXME("(%p, %p): stub\n", pAsync, Reply);
- return RPC_S_INVALID_ASYNC_HANDLE;
+ TRACE("(%p, %p)\n", pAsync, Reply);
+
+ if (!valid_async_handle(pAsync))
+ return RPC_S_INVALID_ASYNC_HANDLE;
+
+ /* FIXME: check completed */
+
+ return NdrpCompleteAsyncClientCall(pAsync, Reply);
}
/***********************************************************************