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.
This commit is contained in:
Robert Shearman 2006-07-24 11:45:24 +01:00 committed by Alexandre Julliard
parent 2334e18ada
commit 98c26a81fe
1 changed files with 27 additions and 4 deletions

View File

@ -1722,6 +1722,12 @@ static unsigned char * ComplexMarshall(PMIDL_STUB_MESSAGE pStubMsg,
pStubMsg->Buffer += 4; pStubMsg->Buffer += 4;
pMemory += 4; pMemory += 4;
break; 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: case RPC_FC_POINTER:
TRACE("pointer=%p <= %p\n", *(unsigned char**)pMemory, pMemory); TRACE("pointer=%p <= %p\n", *(unsigned char**)pMemory, pMemory);
NdrPointerMarshall(pStubMsg, *(unsigned char**)pMemory, pPointer); NdrPointerMarshall(pStubMsg, *(unsigned char**)pMemory, pPointer);
@ -1758,7 +1764,7 @@ static unsigned char * ComplexMarshall(PMIDL_STUB_MESSAGE pStubMsg,
case RPC_FC_PAD: case RPC_FC_PAD:
break; break;
default: default:
FIXME("unhandled format %02x\n", *pFormat); FIXME("unhandled format 0x%02x\n", *pFormat);
} }
pFormat++; pFormat++;
} }
@ -1802,6 +1808,12 @@ static unsigned char * ComplexUnmarshall(PMIDL_STUB_MESSAGE pStubMsg,
pStubMsg->Buffer += 4; pStubMsg->Buffer += 4;
pMemory += 4; pMemory += 4;
break; 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: case RPC_FC_POINTER:
TRACE("pointer => %p\n", pMemory); TRACE("pointer => %p\n", pMemory);
NdrPointerUnmarshall(pStubMsg, (unsigned char**)pMemory, pPointer, TRUE); NdrPointerUnmarshall(pStubMsg, (unsigned char**)pMemory, pPointer, TRUE);
@ -1877,6 +1889,10 @@ static unsigned char * ComplexBufferSize(PMIDL_STUB_MESSAGE pStubMsg,
pStubMsg->BufferLength += 4; pStubMsg->BufferLength += 4;
pMemory += 4; pMemory += 4;
break; break;
case RPC_FC_HYPER:
pStubMsg->BufferLength += 8;
pMemory += 8;
break;
case RPC_FC_POINTER: case RPC_FC_POINTER:
NdrPointerBufferSize(pStubMsg, *(unsigned char**)pMemory, pPointer); NdrPointerBufferSize(pStubMsg, *(unsigned char**)pMemory, pPointer);
pPointer += 4; pPointer += 4;
@ -1911,7 +1927,7 @@ static unsigned char * ComplexBufferSize(PMIDL_STUB_MESSAGE pStubMsg,
case RPC_FC_PAD: case RPC_FC_PAD:
break; break;
default: default:
FIXME("unhandled format %d\n", *pFormat); FIXME("unhandled format 0x%02x\n", *pFormat);
} }
pFormat++; pFormat++;
} }
@ -1946,6 +1962,9 @@ static unsigned char * ComplexFree(PMIDL_STUB_MESSAGE pStubMsg,
case RPC_FC_ENUM32: case RPC_FC_ENUM32:
pMemory += 4; pMemory += 4;
break; break;
case RPC_FC_HYPER:
pMemory += 8;
break;
case RPC_FC_POINTER: case RPC_FC_POINTER:
NdrPointerFree(pStubMsg, *(unsigned char**)pMemory, pPointer); NdrPointerFree(pStubMsg, *(unsigned char**)pMemory, pPointer);
pPointer += 4; pPointer += 4;
@ -1980,7 +1999,7 @@ static unsigned char * ComplexFree(PMIDL_STUB_MESSAGE pStubMsg,
case RPC_FC_PAD: case RPC_FC_PAD:
break; break;
default: default:
FIXME("unhandled format %d\n", *pFormat); FIXME("unhandled format 0x%02x\n", *pFormat);
} }
pFormat++; pFormat++;
} }
@ -2015,6 +2034,10 @@ static unsigned long ComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
size += 4; size += 4;
pStubMsg->Buffer += 4; pStubMsg->Buffer += 4;
break; break;
case RPC_FC_HYPER:
size += 8;
pStubMsg->Buffer += 8;
break;
case RPC_FC_POINTER: case RPC_FC_POINTER:
size += 4; size += 4;
pStubMsg->Buffer += 4; pStubMsg->Buffer += 4;
@ -2046,7 +2069,7 @@ static unsigned long ComplexStructMemorySize(PMIDL_STUB_MESSAGE pStubMsg,
case RPC_FC_PAD: case RPC_FC_PAD:
break; break;
default: default:
FIXME("unhandled format %d\n", *pFormat); FIXME("unhandled format 0x%02x\n", *pFormat);
} }
pFormat++; pFormat++;
} }