NdrClientContext(Un)Marshall shuold add size of context handle to
pStubMsg->Buffer and raise exceptions in some cases.
NDRCContext(Un)marshall shouldn't, that's the difference. You can see
this from my testcases (attached). And this was already implemented in
my patch. I can't understand why are you trying to reimplement it.
Mike McCormack wrote:
> ---
>
> dlls/rpcrt4/ndr_marshall.c | 11 +++++++++--
> 1 files changed, 9 insertions(+), 2 deletions(-)
>
> ------------------------------------------------------------------------
>
> e834795f1d24b26411d76ba725975216867ae58e
> diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c
> index 06ce04a..edd1eb2 100644
> --- a/dlls/rpcrt4/ndr_marshall.c
> +++ b/dlls/rpcrt4/ndr_marshall.c
> @@ -4296,7 +4296,10 @@ void WINAPI NdrClientContextMarshall(PMI
> NDR_CCONTEXT ContextHandle,
> int fCheck)
> {
> - FIXME("(%p, %p, %d): stub\n", pStubMsg, ContextHandle, fCheck);
> + TRACE("(%p, %p, %d): stub\n", pStubMsg, ContextHandle, fCheck);
> + /* FIXME: what does fCheck do? */
> + return NDRCContextMarshall(ContextHandle,
> + pStubMsg->Buffer);
> }
>
> /***********************************************************************
> @@ -4306,7 +4309,11 @@ void WINAPI NdrClientContextUnmarshall(P
> NDR_CCONTEXT * pContextHandle,
> RPC_BINDING_HANDLE BindHandle)
> {
> - FIXME("(%p, %p, %p): stub\n", pStubMsg, pContextHandle, BindHandle);
> + TRACE("(%p, %p, %p): stub\n", pStubMsg, pContextHandle, BindHandle);
> + return NDRCContextUnmarshall(pContextHandle,
> + BindHandle,
> + pStubMsg->Buffer,
> + pStubMsg->RpcMsg->DataRepresentation);
> }
>
> void WINAPI NdrServerContextMarshall(PMIDL_STUB_MESSAGE pStubMsg,
>
>
> ------------------------------------------------------------------------
>
>
>