rpcrt4: Implement NdrSimpleType{Marshall,Unmarshall}.
This commit is contained in:
parent
dfcdbba181
commit
e3abd2b3ff
@ -1524,7 +1524,7 @@ void WINAPI NdrPointerFree(PMIDL_STUB_MESSAGE pStubMsg,
|
|||||||
void WINAPI NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
|
void WINAPI NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
|
||||||
unsigned char FormatChar )
|
unsigned char FormatChar )
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
NdrBaseTypeMarshall(pStubMsg, pMemory, &FormatChar);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
@ -1533,7 +1533,7 @@ void WINAPI NdrSimpleTypeMarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* p
|
|||||||
void WINAPI NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
|
void WINAPI NdrSimpleTypeUnmarshall( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory,
|
||||||
unsigned char FormatChar )
|
unsigned char FormatChar )
|
||||||
{
|
{
|
||||||
FIXME("stub\n");
|
NdrBaseTypeUnmarshall(pStubMsg, &pMemory, &FormatChar, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -73,6 +73,42 @@ static const MIDL_STUB_DESC Object_StubDesc =
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static void test_ndr_simple_type(void)
|
||||||
|
{
|
||||||
|
RPC_MESSAGE RpcMessage;
|
||||||
|
MIDL_STUB_MESSAGE StubMsg;
|
||||||
|
MIDL_STUB_DESC StubDesc;
|
||||||
|
long l, l2 = 0;
|
||||||
|
|
||||||
|
StubDesc = Object_StubDesc;
|
||||||
|
StubDesc.pFormatTypes = NULL;
|
||||||
|
|
||||||
|
NdrClientInitializeNew(
|
||||||
|
&RpcMessage,
|
||||||
|
&StubMsg,
|
||||||
|
&StubDesc,
|
||||||
|
0);
|
||||||
|
|
||||||
|
StubMsg.BufferLength = 16;
|
||||||
|
StubMsg.RpcMsg->Buffer = StubMsg.BufferStart = StubMsg.Buffer = HeapAlloc(GetProcessHeap(), 0, StubMsg.BufferLength);
|
||||||
|
l = 0xcafebabe;
|
||||||
|
NdrSimpleTypeMarshall(&StubMsg, (unsigned char*)&l, 8 /* FC_LONG */);
|
||||||
|
ok(StubMsg.Buffer == StubMsg.BufferStart + 4, "%p %p\n", StubMsg.Buffer, StubMsg.BufferStart);
|
||||||
|
ok(*(long*)StubMsg.BufferStart == l, "%ld\n", *(long*)StubMsg.BufferStart);
|
||||||
|
|
||||||
|
StubMsg.Buffer = StubMsg.BufferStart + 1;
|
||||||
|
NdrSimpleTypeMarshall(&StubMsg, (unsigned char*)&l, 8 /* FC_LONG */);
|
||||||
|
ok(StubMsg.Buffer == StubMsg.BufferStart + 8, "%p %p\n", StubMsg.Buffer, StubMsg.BufferStart);
|
||||||
|
ok(*(long*)(StubMsg.BufferStart + 4) == l, "%ld\n", *(long*)StubMsg.BufferStart);
|
||||||
|
|
||||||
|
StubMsg.Buffer = StubMsg.BufferStart + 1;
|
||||||
|
NdrSimpleTypeUnmarshall(&StubMsg, (unsigned char*)&l2, 8 /* FC_LONG */);
|
||||||
|
ok(StubMsg.Buffer == StubMsg.BufferStart + 8, "%p %p\n", StubMsg.Buffer, StubMsg.BufferStart);
|
||||||
|
ok(l2 == l, "%ld\n", l2);
|
||||||
|
|
||||||
|
HeapFree(GetProcessHeap(), 0, StubMsg.BufferStart);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_pointer_marshal(const unsigned char *formattypes,
|
static void test_pointer_marshal(const unsigned char *formattypes,
|
||||||
void *memsrc,
|
void *memsrc,
|
||||||
long srcsize,
|
long srcsize,
|
||||||
@ -950,6 +986,7 @@ todo_wine {
|
|||||||
|
|
||||||
START_TEST( ndr_marshall )
|
START_TEST( ndr_marshall )
|
||||||
{
|
{
|
||||||
|
test_ndr_simple_type();
|
||||||
test_simple_types();
|
test_simple_types();
|
||||||
test_simple_struct();
|
test_simple_struct();
|
||||||
test_fullpointer_xlat();
|
test_fullpointer_xlat();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user