Author: tretiakov Date: Tue Apr 4 16:56:32 2006 New Revision: 21454
URL: http://svn.reactos.ru/svn/reactos?rev=21454&view=rev Log: Improved code a bit. Added ContextHandleNdr structure
Modified: trunk/reactos/dll/win32/rpcrt4/ndr_marshall.c trunk/reactos/dll/win32/rpcrt4/rpc_binding.h
Modified: trunk/reactos/dll/win32/rpcrt4/ndr_marshall.c URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/rpcrt4/ndr_marshal... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/ndr_marshall.c (original) +++ trunk/reactos/dll/win32/rpcrt4/ndr_marshall.c Tue Apr 4 16:56:32 2006 @@ -3236,7 +3236,7 @@ void WINAPI NDRCContextMarshall(NDR_CCONTEXT CContext, void *pBuff ) { CContextHandle *ctx = (CContextHandle*)CContext; - memcpy(pBuff, ctx->Ndr, CONTEXT_HANDLE_NDR_SIZE); + memcpy(pBuff, &ctx->Ndr, sizeof(ContextHandleNdr)); }
/*********************************************************************** @@ -3252,7 +3252,7 @@
NDRCContextMarshall(ContextHandle, pStubMsg->Buffer); - pStubMsg->Buffer += CONTEXT_HANDLE_NDR_SIZE; + pStubMsg->Buffer += sizeof(ContextHandleNdr);
}
@@ -3265,16 +3265,12 @@ void *pBuff, unsigned long DataRepresentation ) { - CContextHandle *ctx; + CContextHandle *ctx = (CContextHandle*)*pCContext; + ContextHandleNdr *ndr = (ContextHandleNdr*)pBuff; RPC_STATUS status; - char *buf = (char*)pBuff; - int i; - - for(i = 0; i < CONTEXT_HANDLE_NDR_SIZE && !buf[i]; i++); - - if(i == CONTEXT_HANDLE_NDR_SIZE) + + if(UuidIsNil(&ndr->uuid, &status)) { - ctx = (CContextHandle*)*pCContext; if(ctx) { RPCRT4_DestroyBinding(ctx->Binding); @@ -3290,7 +3286,7 @@ status = RpcBindingCopy(hBinding, (RPC_BINDING_HANDLE*) &ctx->Binding); if(status != RPC_S_OK) RpcRaiseException(status); - memcpy(ctx->Ndr, pBuff, CONTEXT_HANDLE_NDR_SIZE); + memcpy(&ctx->Ndr, ndr, sizeof(ContextHandleNdr)); *pCContext = (NDR_CCONTEXT)ctx; } } @@ -3310,7 +3306,7 @@ pStubMsg->Buffer, pStubMsg->RpcMsg->DataRepresentation); - pStubMsg->Buffer += CONTEXT_HANDLE_NDR_SIZE; + pStubMsg->Buffer += sizeof(ContextHandleNdr); }
void WINAPI NdrServerContextMarshall(PMIDL_STUB_MESSAGE pStubMsg,
Modified: trunk/reactos/dll/win32/rpcrt4/rpc_binding.h URL: http://svn.reactos.ru/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpc_binding... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/rpc_binding.h (original) +++ trunk/reactos/dll/win32/rpcrt4/rpc_binding.h Tue Apr 4 16:56:32 2006 @@ -53,12 +53,16 @@ RpcConnection* FromConn; } RpcBinding;
-#define CONTEXT_HANDLE_NDR_SIZE 20 +typedef struct _ContextHandleNdr +{ + UINT attributes; + UUID uuid; +} ContextHandleNdr;
typedef struct _CContextHandle { RpcBinding *Binding; - BYTE Ndr[CONTEXT_HANDLE_NDR_SIZE]; + ContextHandleNdr Ndr; } CContextHandle;
LPSTR RPCRT4_strndupA(LPCSTR src, INT len);