Module: wine Branch: refs/heads/master Commit: 98c26a81fece2afc901a95a465b3f8d919c52e50 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=98c26a81fece2afc901a95a4...
Author: Robert Shearman rob@codeweavers.com Date: Mon Jul 24 11:45:24 2006 +0100
rpcrt4: Add support for marshaling the FC_HYPER base type in complex types.
Change the FIXME messages to print out unrecognised format characters in hex rather than decimal.
---
dlls/rpcrt4/ndr_marshall.c | 31 +++++++++++++++++++++++++++---- 1 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c index e1adfa0..1d751ac 100644 --- a/dlls/rpcrt4/ndr_marshall.c +++ b/dlls/rpcrt4/ndr_marshall.c @@ -1722,6 +1722,12 @@ static unsigned char * ComplexMarshall(P pStubMsg->Buffer += 4; pMemory += 4; break; + case RPC_FC_HYPER: + TRACE("longlong=%s <= %p\n", wine_dbgstr_longlong(*(ULONGLONG*)pMemory), pMemory); + memcpy(pStubMsg->Buffer, pMemory, 8); + pStubMsg->Buffer += 8; + pMemory += 8; + break; case RPC_FC_POINTER: TRACE("pointer=%p <= %p\n", *(unsigned char**)pMemory, pMemory); NdrPointerMarshall(pStubMsg, *(unsigned char**)pMemory, pPointer); @@ -1758,7 +1764,7 @@ static unsigned char * ComplexMarshall(P case RPC_FC_PAD: break; default: - FIXME("unhandled format %02x\n", *pFormat); + FIXME("unhandled format 0x%02x\n", *pFormat); } pFormat++; } @@ -1802,6 +1808,12 @@ static unsigned char * ComplexUnmarshall pStubMsg->Buffer += 4; pMemory += 4; break; + case RPC_FC_HYPER: + memcpy(pMemory, pStubMsg->Buffer, 8); + TRACE("longlong=%s => %p\n", wine_dbgstr_longlong(*(ULONGLONG*)pMemory), pMemory); + pStubMsg->Buffer += 8; + pMemory += 8; + break; case RPC_FC_POINTER: TRACE("pointer => %p\n", pMemory); NdrPointerUnmarshall(pStubMsg, (unsigned char**)pMemory, pPointer, TRUE); @@ -1877,6 +1889,10 @@ static unsigned char * ComplexBufferSize pStubMsg->BufferLength += 4; pMemory += 4; break; + case RPC_FC_HYPER: + pStubMsg->BufferLength += 8; + pMemory += 8; + break; case RPC_FC_POINTER: NdrPointerBufferSize(pStubMsg, *(unsigned char**)pMemory, pPointer); pPointer += 4; @@ -1911,7 +1927,7 @@ static unsigned char * ComplexBufferSize case RPC_FC_PAD: break; default: - FIXME("unhandled format %d\n", *pFormat); + FIXME("unhandled format 0x%02x\n", *pFormat); } pFormat++; } @@ -1946,6 +1962,9 @@ static unsigned char * ComplexFree(PMIDL case RPC_FC_ENUM32: pMemory += 4; break; + case RPC_FC_HYPER: + pMemory += 8; + break; case RPC_FC_POINTER: NdrPointerFree(pStubMsg, *(unsigned char**)pMemory, pPointer); pPointer += 4; @@ -1980,7 +1999,7 @@ static unsigned char * ComplexFree(PMIDL case RPC_FC_PAD: break; default: - FIXME("unhandled format %d\n", *pFormat); + FIXME("unhandled format 0x%02x\n", *pFormat); } pFormat++; } @@ -2015,6 +2034,10 @@ static unsigned long ComplexStructMemory size += 4; pStubMsg->Buffer += 4; break; + case RPC_FC_HYPER: + size += 8; + pStubMsg->Buffer += 8; + break; case RPC_FC_POINTER: size += 4; pStubMsg->Buffer += 4; @@ -2046,7 +2069,7 @@ static unsigned long ComplexStructMemory case RPC_FC_PAD: break; default: - FIXME("unhandled format %d\n", *pFormat); + FIXME("unhandled format 0x%02x\n", *pFormat); } pFormat++; }