Robert Shearman : rpcrt4: Add support for marshaling the FC_HYPER base type in complex types.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jul 24 06:55:12 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 98c26a81fece2afc901a95a465b3f8d919c52e50
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=98c26a81fece2afc901a95a465b3f8d919c52e50

Author: Robert Shearman <rob at 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++;
   }




More information about the wine-cvs mailing list