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_marsha…
==============================================================================
--- 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_bindin…
==============================================================================
--- 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);