diff --git a/dlls/rpcrt4/ndr_marshall.c b/dlls/rpcrt4/ndr_marshall.c index 94e1afb8b9e..2b0eb8434ef 100644 --- a/dlls/rpcrt4/ndr_marshall.c +++ b/dlls/rpcrt4/ndr_marshall.c @@ -125,7 +125,8 @@ NDR_MARSHALL NdrMarshaller[NDR_TABLE_SIZE] = { NdrComplexArrayMarshall, /* 0x22 */ NdrConformantStringMarshall, 0, 0, - NdrConformantStringMarshall, 0, 0, 0, 0, + NdrConformantStringMarshall, + NdrNonConformantStringMarshall, 0, 0, 0, /* 0x2a */ NdrEncapsulatedUnionMarshall, NdrNonEncapsulatedUnionMarshall, @@ -158,7 +159,8 @@ NDR_UNMARSHALL NdrUnmarshaller[NDR_TABLE_SIZE] = { NdrComplexArrayUnmarshall, /* 0x22 */ NdrConformantStringUnmarshall, 0, 0, - NdrConformantStringUnmarshall, 0, 0, 0, 0, + NdrConformantStringUnmarshall, + NdrNonConformantStringUnmarshall, 0, 0, 0, /* 0x2a */ NdrEncapsulatedUnionUnmarshall, NdrNonEncapsulatedUnionUnmarshall, @@ -191,7 +193,8 @@ NDR_BUFFERSIZE NdrBufferSizer[NDR_TABLE_SIZE] = { NdrComplexArrayBufferSize, /* 0x22 */ NdrConformantStringBufferSize, 0, 0, - NdrConformantStringBufferSize, 0, 0, 0, 0, + NdrConformantStringBufferSize, + NdrNonConformantStringBufferSize, 0, 0, 0, /* 0x2a */ NdrEncapsulatedUnionBufferSize, NdrNonEncapsulatedUnionBufferSize, @@ -220,7 +223,8 @@ NDR_MEMORYSIZE NdrMemorySizer[NDR_TABLE_SIZE] = { NdrComplexArrayMemorySize, /* 0x22 */ NdrConformantStringMemorySize, 0, 0, - NdrConformantStringMemorySize, 0, 0, 0, 0, + NdrConformantStringMemorySize, + NdrNonConformantStringMemorySize, 0, 0, 0, /* 0x2a */ 0, 0, 0, 0, 0, /* 0x2f */ @@ -574,6 +578,49 @@ unsigned char *WINAPI NdrConformantStringUnmarshall( PMIDL_STUB_MESSAGE pStubMsg return NULL; /* FIXME: is this always right? */ } +/*********************************************************************** + * NdrNonConformantStringMarshall [RPCRT4.@] + */ +unsigned char * WINAPI NdrNonConformantStringMarshall(PMIDL_STUB_MESSAGE pStubMsg, + unsigned char *pMemory, + PFORMAT_STRING pFormat) +{ + FIXME("stub\n"); + return NULL; +} + +/*********************************************************************** + * NdrNonConformantStringUnmarshall [RPCRT4.@] + */ +unsigned char * WINAPI NdrNonConformantStringUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, + unsigned char **ppMemory, + PFORMAT_STRING pFormat, + unsigned char fMustAlloc) +{ + FIXME("stub\n"); + return NULL; +} + +/*********************************************************************** + * NdrNonConformantStringBufferSize [RPCRT4.@] + */ +void WINAPI NdrNonConformantStringBufferSize(PMIDL_STUB_MESSAGE pStubMsg, + unsigned char *pMemory, + PFORMAT_STRING pFormat) +{ + FIXME("stub\n"); +} + +/*********************************************************************** + * NdrNonConformantStringMemorySize [RPCRT4.@] + */ +unsigned long WINAPI NdrNonConformantStringMemorySize(PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat) +{ + FIXME("stub\n"); + return 0; +} + static inline void dump_pointer_attr(unsigned char attr) { if (attr & RPC_FC_P_ALLOCALLNODES) @@ -2621,21 +2668,67 @@ void WINAPI NdrXmitOrRepAsFree(PMIDL_STUB_MESSAGE pStubMsg, /*********************************************************************** * NdrClientContextMarshall */ -unsigned char * WINAPI NdrClientContextMarshall(PMIDL_STUB_MESSAGE pStubMsg, - NDR_CCONTEXT ContextHandle, - int fCheck) +void WINAPI NdrClientContextMarshall(PMIDL_STUB_MESSAGE pStubMsg, + NDR_CCONTEXT ContextHandle, + int fCheck) { FIXME("(%p, %p, %d): stub\n", pStubMsg, ContextHandle, fCheck); - return NULL; } /*********************************************************************** * NdrClientContextUnmarshall */ -unsigned char * WINAPI NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, - NDR_CCONTEXT * pContextHandle, - RPC_BINDING_HANDLE BindHandle) +void WINAPI NdrClientContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, + NDR_CCONTEXT * pContextHandle, + RPC_BINDING_HANDLE BindHandle) { FIXME("(%p, %p, %p): stub\n", pStubMsg, pContextHandle, BindHandle); +} + +void WINAPI NdrServerContextMarshall(PMIDL_STUB_MESSAGE pStubMsg, + NDR_SCONTEXT ContextHandle, + int fCheck ) +{ + FIXME("(%p, %p, %d): stub\n", pStubMsg, ContextHandle, fCheck); +} + +NDR_SCONTEXT WINAPI NdrServerContextUnmarshall(PMIDL_STUB_MESSAGE pStubMsg) +{ + FIXME("(%p): stub\n", pStubMsg); + return NULL; +} + +void WINAPI NdrContextHandleSize(PMIDL_STUB_MESSAGE pStubMsg, + unsigned char* pMemory, + PFORMAT_STRING pFormat) +{ + FIXME("(%p, %p, %p): stub\n", pStubMsg, pMemory, pFormat); +} + +NDR_SCONTEXT WINAPI NdrContextHandleInitialize(PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat) +{ + FIXME("(%p, %p): stub\n", pStubMsg, pFormat); + return NULL; +} + +void WINAPI NdrServerContextNewMarshall(PMIDL_STUB_MESSAGE pStubMsg, + NDR_SCONTEXT ContextHandle, + NDR_RUNDOWN RundownRoutine, + PFORMAT_STRING pFormat) +{ + FIXME("(%p, %p, %p, %p): stub\n", pStubMsg, ContextHandle, RundownRoutine, pFormat); +} + +NDR_SCONTEXT WINAPI NdrServerContextNewUnmarshall(PMIDL_STUB_MESSAGE pStubMsg, + PFORMAT_STRING pFormat) +{ + FIXME("(%p, %p): stub\n", pStubMsg, pFormat); + return NULL; +} + +RPC_BINDING_HANDLE WINAPI NDRCContextBinding(NDR_CCONTEXT CContext) +{ + FIXME("(%p): stub\n", CContext); return NULL; } diff --git a/dlls/rpcrt4/ndr_midl.c b/dlls/rpcrt4/ndr_midl.c index 8f55b1d5305..6f3133f231a 100644 --- a/dlls/rpcrt4/ndr_midl.c +++ b/dlls/rpcrt4/ndr_midl.c @@ -285,3 +285,19 @@ unsigned char *WINAPI NdrSendReceive( MIDL_STUB_MESSAGE *stubmsg, unsigned char /* FIXME: is this the right return value? */ return NULL; } + +/************************************************************************ + * NdrMapCommAndFaultStatus [RPCRT4.@] + */ +RPC_STATUS RPC_ENTRY NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, + unsigned long *pCommStatus, + unsigned long *pFaultStatus, + RPC_STATUS Status ) +{ + FIXME("(%p, %p, %p, %ld): stub\n", pStubMsg, pCommStatus, pFaultStatus, Status); + + *pCommStatus = 0; + *pFaultStatus = 0; + + return RPC_S_OK; +} diff --git a/dlls/rpcrt4/rpcrt4.spec b/dlls/rpcrt4/rpcrt4.spec index 00ab9bdc3de..186096dea28 100644 --- a/dlls/rpcrt4/rpcrt4.spec +++ b/dlls/rpcrt4/rpcrt4.spec @@ -137,7 +137,7 @@ @ stub MesInqProcEncodingId @ stub MqGetContext # win9x @ stub MqRegisterQueue # win9x -@ stub NDRCContextBinding +@ stdcall NDRCContextBinding(ptr) @ stub NDRCContextMarshall @ stub NDRCContextUnmarshall @ stub NDRSContextMarshall2 @@ -197,8 +197,8 @@ @ stdcall NdrConformantVaryingStructMarshall(ptr ptr ptr) @ stdcall NdrConformantVaryingStructMemorySize(ptr ptr) @ stdcall NdrConformantVaryingStructUnmarshall(ptr ptr ptr long) -@ stub NdrContextHandleInitialize -@ stub NdrContextHandleSize +@ stdcall NdrContextHandleInitialize(ptr ptr) +@ stdcall NdrContextHandleSize(ptr ptr ptr) @ stdcall NdrConvert2(ptr ptr long) @ stdcall NdrConvert(ptr ptr) @ stub NdrCorrelationFree @@ -261,10 +261,10 @@ @ stub NdrMesTypeEncode2 @ stub NdrMesTypeEncode @ stub NdrMesTypeFree2 -@ stub NdrNonConformantStringBufferSize #(ptr ptr ptr) -@ stub NdrNonConformantStringMarshall #(ptr ptr ptr) -@ stub NdrNonConformantStringMemorySize #(ptr ptr) -@ stub NdrNonConformantStringUnmarshall #(ptr ptr ptr long) +@ stdcall NdrNonConformantStringBufferSize(ptr ptr ptr) +@ stdcall NdrNonConformantStringMarshall(ptr ptr ptr) +@ stdcall NdrNonConformantStringMemorySize(ptr ptr) +@ stdcall NdrNonConformantStringUnmarshall(ptr ptr ptr long) @ stdcall NdrNonEncapsulatedUnionBufferSize(ptr ptr ptr) @ stdcall NdrNonEncapsulatedUnionFree(ptr ptr ptr) @ stdcall NdrNonEncapsulatedUnionMarshall(ptr ptr ptr) @@ -305,10 +305,10 @@ @ stdcall NdrSendReceive(ptr ptr) @ stub NdrServerCall2 @ stub NdrServerCall -@ stub NdrServerContextMarshall -@ stub NdrServerContextNewMarshall # wxp -@ stub NdrServerContextNewUnmarshall # wxp -@ stub NdrServerContextUnmarshall +@ stdcall NdrServerContextMarshall(ptr ptr long) +@ stdcall NdrServerContextNewMarshall(ptr ptr ptr ptr) # wxp +@ stdcall NdrServerContextNewUnmarshall(ptr ptr) # wxp +@ stdcall NdrServerContextUnmarshall(ptr) @ stub NdrServerInitialize @ stub NdrServerInitializeMarshall @ stdcall NdrServerInitializeNew(ptr ptr ptr) diff --git a/include/rpcndr.h b/include/rpcndr.h index 0ace1d41901..82dd0ebe884 100644 --- a/include/rpcndr.h +++ b/include/rpcndr.h @@ -404,6 +404,8 @@ typedef struct _SCONTEXT_QUEUE { NDR_SCONTEXT *ArrayOfObjects; } SCONTEXT_QUEUE, *PSCONTEXT_QUEUE; +/* Context Handles */ + RPCRTAPI RPC_BINDING_HANDLE RPC_ENTRY NDRCContextBinding( IN NDR_CCONTEXT CContext ); @@ -438,6 +440,32 @@ RPCRTAPI NDR_SCONTEXT RPC_ENTRY IN unsigned long DataRepresentation, IN void *CtxGuard, IN unsigned long Flags ); +RPCRTAPI void RPC_ENTRY + NdrClientContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_CCONTEXT ContextHandle, int fCheck ); + +RPCRTAPI void RPC_ENTRY + NdrClientContextUnmarshall( IN PMIDL_STUB_MESSAGE pStubMsg, OUT NDR_CCONTEXT* pContextHandle, + IN RPC_BINDING_HANDLE BindHandle ); + +RPCRTAPI void RPC_ENTRY + NdrServerContextMarshall ( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle, int fCheck ); + +RPCRTAPI NDR_SCONTEXT RPC_ENTRY + NdrServerContextUnmarshall( IN PMIDL_STUB_MESSAGE pStubMsg ); + +RPCRTAPI void RPC_ENTRY + NdrContextHandleSize( PMIDL_STUB_MESSAGE pStubMsg, unsigned char* pMemory, PFORMAT_STRING pFormat ); + +RPCRTAPI NDR_SCONTEXT RPC_ENTRY + NdrContextHandleInitialize( IN PMIDL_STUB_MESSAGE pStubMsg, IN PFORMAT_STRING pFormat ); + +RPCRTAPI void RPC_ENTRY + NdrServerContextNewMarshall( PMIDL_STUB_MESSAGE pStubMsg, NDR_SCONTEXT ContextHandle, + NDR_RUNDOWN RundownRoutine, PFORMAT_STRING pFormat ); + +RPCRTAPI NDR_SCONTEXT RPC_ENTRY + NdrServerContextNewUnmarshall( IN PMIDL_STUB_MESSAGE pStubMsg, IN PFORMAT_STRING pFormat ); + RPCRTAPI void RPC_ENTRY RpcSsDestroyClientContext( IN void **ContextHandle ); @@ -512,7 +540,11 @@ RPCRTAPI void* RPC_ENTRY RPCRTAPI void RPC_ENTRY NdrClearOutParameters( PMIDL_STUB_MESSAGE pStubMsg, PFORMAT_STRING pFormat, void *ArgAddr ); - + +RPCRTAPI RPC_STATUS RPC_ENTRY + NdrMapCommAndFaultStatus( PMIDL_STUB_MESSAGE pStubMsg, unsigned long *pCommStatus, + unsigned long *pFaultStatus, RPC_STATUS Status_ ); + RPCRTAPI void* RPC_ENTRY NdrOleAllocate( size_t Size ); RPCRTAPI void RPC_ENTRY diff --git a/include/wine/rpcfc.h b/include/wine/rpcfc.h index b488d782d6c..da749e35662 100644 --- a/include/wine/rpcfc.h +++ b/include/wine/rpcfc.h @@ -67,6 +67,7 @@ #define RPC_FC_C_CSTRING 0x22 #define RPC_FC_C_WSTRING 0x25 +#define RPC_FC_CSTRING 0x26 #define RPC_FC_ENCAPSULATED_UNION 0x2a #define RPC_FC_NON_ENCAPSULATED_UNION 0x2b