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,