From 61878c60d208a7fe9e7f85efdc44cfa60bdbe424 Mon Sep 17 00:00:00 2001 From: Filip Navara Date: Sat, 17 Apr 2004 07:41:26 +0000 Subject: [PATCH] - Improved RPC headers. svn path=/trunk/; revision=9170 --- reactos/w32api/include/rpc.h | 6 +++++ reactos/w32api/include/rpcdce.h | 1 + reactos/w32api/include/rpcdcep.h | 7 +++-- reactos/w32api/include/rpcndr.h | 44 ++++++++++++++++++++++++++++++- reactos/w32api/include/rpcproxy.h | 4 +++ 5 files changed, 59 insertions(+), 3 deletions(-) diff --git a/reactos/w32api/include/rpc.h b/reactos/w32api/include/rpc.h index 0e3df5eaf1e..3ca74e9cd3f 100644 --- a/reactos/w32api/include/rpc.h +++ b/reactos/w32api/include/rpc.h @@ -17,6 +17,12 @@ extern "C" { #define RPC_UNICODE_SUPPORTED #endif +#ifdef _RPCRT4_ +#define RPCRTAPI DECLSPEC_EXPORT +#else +#define RPCRTAPI DECLSPEC_IMPORT +#endif + #ifndef __MIDL_USER_DEFINED #define midl_user_allocate MIDL_user_allocate #define midl_user_free MIDL_user_free diff --git a/reactos/w32api/include/rpcdce.h b/reactos/w32api/include/rpcdce.h index f2adce40fed..59599d784f7 100644 --- a/reactos/w32api/include/rpcdce.h +++ b/reactos/w32api/include/rpcdce.h @@ -345,6 +345,7 @@ RPC_STATUS RPC_ENTRY RpcServerInqIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV**); RPC_STATUS RPC_ENTRY RpcServerListen(unsigned int,unsigned int,unsigned int); RPC_STATUS RPC_ENTRY RpcServerRegisterIf(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*); RPC_STATUS RPC_ENTRY RpcServerRegisterIfEx(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*); +RPC_STATUS RPC_ENTRY RpcServerRegisterIf2(RPC_IF_HANDLE,UUID*,RPC_MGR_EPV*,unsigned int,unsigned int,unsigned int,RPC_IF_CALLBACK_FN*); RPC_STATUS RPC_ENTRY RpcServerUnregisterIf(RPC_IF_HANDLE,UUID*,unsigned int); RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqs(unsigned int,void*); RPC_STATUS RPC_ENTRY RpcServerUseAllProtseqsEx(unsigned int,void*,PRPC_POLICY); diff --git a/reactos/w32api/include/rpcdcep.h b/reactos/w32api/include/rpcdcep.h index c45bc46905e..d6da3e94efa 100644 --- a/reactos/w32api/include/rpcdcep.h +++ b/reactos/w32api/include/rpcdcep.h @@ -60,6 +60,7 @@ typedef struct _RPC_SERVER_INTERFACE { PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; void *DefaultManagerEpv; void const *InterpreterInfo; + unsigned int Flags; } RPC_SERVER_INTERFACE,*PRPC_SERVER_INTERFACE; typedef struct _RPC_CLIENT_INTERFACE { unsigned int Length; @@ -70,6 +71,7 @@ typedef struct _RPC_CLIENT_INTERFACE { PRPC_PROTSEQ_ENDPOINT RpcProtseqEndpoint; unsigned long Reserved; void const *InterpreterInfo; + unsigned int Flags; } RPC_CLIENT_INTERFACE,*PRPC_CLIENT_INTERFACE; typedef void *I_RPC_MUTEX; typedef struct _RPC_TRANSFER_SYNTAX { @@ -77,10 +79,11 @@ typedef struct _RPC_TRANSFER_SYNTAX { unsigned short VersMajor; unsigned short VersMinor; } RPC_TRANSFER_SYNTAX; -typedef long(__stdcall *RPC_BLOCKING_FUNCTION)(void*,void*); +typedef RPC_STATUS (*RPC_BLOCKING_FN)(void*,void*,void*); long __stdcall I_RpcGetBuffer(RPC_MESSAGE*); long __stdcall I_RpcSendReceive(RPC_MESSAGE*); +long __stdcall I_RpcSend(RPC_MESSAGE*); long __stdcall I_RpcFreeBuffer(RPC_MESSAGE*); void __stdcall I_RpcRequestMutex(I_RPC_MUTEX*); void __stdcall I_RpcClearMutex(I_RPC_MUTEX); @@ -110,7 +113,7 @@ void __stdcall I_RpcSsDontSerializeContext(void); long __stdcall I_RpcServerRegisterForwardFunction(RPC_FORWARD_FUNCTION*); long __stdcall I_RpcConnectionInqSockBuffSize(unsigned long*,unsigned long*); long __stdcall I_RpcConnectionSetSockBuffSize(unsigned long,unsigned long); -long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FUNCTION); +long __stdcall I_RpcBindingSetAsync(HANDLE,RPC_BLOCKING_FN); long __stdcall I_RpcAsyncSendReceive(RPC_MESSAGE*,void*); long __stdcall I_RpcGetThreadWindowHandle(void**); long __stdcall I_RpcServerThreadPauseListening(void); diff --git a/reactos/w32api/include/rpcndr.h b/reactos/w32api/include/rpcndr.h index 8b728bbb5f5..d1c4eec722b 100644 --- a/reactos/w32api/include/rpcndr.h +++ b/reactos/w32api/include/rpcndr.h @@ -196,7 +196,7 @@ typedef struct _MIDL_STUB_MESSAGE { unsigned long *SizePtrLengthArray; void*pArgQueue; unsigned long dwStubPhase; - unsigned long Reserved[5]; + unsigned long w2kReserved[5]; } MIDL_STUB_MESSAGE,*PMIDL_STUB_MESSAGE; #pragma pack(pop) typedef void*(__RPC_API *GENERIC_BINDING_ROUTINE)(void*); @@ -226,6 +226,37 @@ typedef struct _COMM_FAULT_OFFSETS { short CommOffset; short FaultOffset; } COMM_FAULT_OFFSETS; +typedef unsigned long (__RPC_USER *USER_MARSHAL_SIZING_ROUTINE)(unsigned long *,unsigned long,void *); +typedef unsigned char *(__RPC_USER *USER_MARSHAL_MARSHALLING_ROUTINE)(unsigned long *,unsigned char *,void *); +typedef unsigned char *(__RPC_USER *USER_MARSHAL_UNMARSHALLING_ROUTINE)(unsigned long *,unsigned char *,void *); +typedef void (__RPC_USER *USER_MARSHAL_FREEING_ROUTINE)(unsigned long *,void *); +typedef struct _USER_MARSHAL_ROUTINE_QUADRUPLE { + USER_MARSHAL_SIZING_ROUTINE pfnBufferSize; + USER_MARSHAL_MARSHALLING_ROUTINE pfnMarshall; + USER_MARSHAL_UNMARSHALLING_ROUTINE pfnUnmarshall; + USER_MARSHAL_FREEING_ROUTINE pfnFree; +} USER_MARSHAL_ROUTINE_QUADRUPLE; +typedef void (__RPC_USER *NDR_NOTIFY_ROUTINE)(void); +typedef enum _IDL_CS_CONVERT { + IDL_CS_NO_CONVERT, + IDL_CS_IN_PLACE_CONVERT, + IDL_CS_NEW_BUFFER_CONVERT +} IDL_CS_CONVERT; +typedef void (__RPC_USER *CS_TYPE_NET_SIZE_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,unsigned long,IDL_CS_CONVERT*,unsigned long*,error_status_t*); +typedef void (__RPC_USER *CS_TYPE_LOCAL_SIZE_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,unsigned long,IDL_CS_CONVERT*,unsigned long*,error_status_t*); +typedef void (__RPC_USER *CS_TYPE_TO_NETCS_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,void*,unsigned long,byte*,unsigned long*,error_status_t*); +typedef void (__RPC_USER *CS_TYPE_FROM_NETCS_ROUTINE)(RPC_BINDING_HANDLE,unsigned long,byte*,unsigned long,unsigned long,void*,unsigned long*,error_status_t*); +typedef void (__RPC_USER *CS_TAG_GETTING_ROUTINE)(RPC_BINDING_HANDLE,int,unsigned long*,unsigned long*,unsigned long*,error_status_t*); +typedef struct _NDR_CS_SIZE_CONVERT_ROUTINES { + CS_TYPE_NET_SIZE_ROUTINE pfnNetSize; + CS_TYPE_TO_NETCS_ROUTINE pfnToNetCs; + CS_TYPE_LOCAL_SIZE_ROUTINE pfnLocalSize; + CS_TYPE_FROM_NETCS_ROUTINE pfnFromNetCs; +} NDR_CS_SIZE_CONVERT_ROUTINES; +typedef struct _NDR_CS_ROUTINES { + NDR_CS_SIZE_CONVERT_ROUTINES *pSizeConvertRoutines; + CS_TAG_GETTING_ROUTINE *pTagGettingRoutines; +} NDR_CS_ROUTINES; typedef struct _MIDL_STUB_DESC { void*RpcInterfaceInformation; void*(__RPC_API *pfnAllocate)(unsigned int); @@ -245,6 +276,12 @@ typedef struct _MIDL_STUB_DESC { MALLOC_FREE_STRUCT *pMallocFreeStruct; long MIDLVersion; const COMM_FAULT_OFFSETS *CommFaultOffsets; + const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple; + const NDR_NOTIFY_ROUTINE *NotifyRoutineTable; + ULONG_PTR mFlags; + const NDR_CS_ROUTINES *CsRoutineTables; + void *Reserved4; + ULONG_PTR Reserved5; } MIDL_STUB_DESC; typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC; typedef void*PMIDL_XMIT_TYPE; @@ -467,6 +504,11 @@ void*RPC_ENTRY NdrAllocate(PMIDL_STUB_MESSAGE,unsigned int); void RPC_ENTRY NdrClearOutParameters(PMIDL_STUB_MESSAGE,PFORMAT_STRING,void*); void*RPC_ENTRY NdrOleAllocate(unsigned int); void RPC_ENTRY NdrOleFree(void*); +unsigned char*RPC_ENTRY NdrUserMarshalMarshall(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned char*RPC_ENTRY NdrUserMarshalUnmarshall(PMIDL_STUB_MESSAGE,unsigned char**,PFORMAT_STRING,unsigned char); +void RPC_ENTRY NdrUserMarshalBufferSize(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); +unsigned long RPC_ENTRY NdrUserMarshalMemorySize(PMIDL_STUB_MESSAGE,PFORMAT_STRING); +void RPC_ENTRY NdrUserMarshalFree(PMIDL_STUB_MESSAGE,unsigned char*,PFORMAT_STRING); #ifdef __cplusplus } #endif diff --git a/reactos/w32api/include/rpcproxy.h b/reactos/w32api/include/rpcproxy.h index 5700e541aae..d4fcce533e0 100644 --- a/reactos/w32api/include/rpcproxy.h +++ b/reactos/w32api/include/rpcproxy.h @@ -152,6 +152,10 @@ typedef struct tagCStdStubBuffer { const struct IRpcStubBufferVtbl * lpVtbl; long RefCount; struct IUnknown *pvServerObject; + const struct ICallFactoryVtbl * pCallFactoryVtbl; + const IID * pAsyncIID; + struct IPSFactoryBuffer * pPSFactory; + const struct IReleaseMarshalBuffersVtbl * pRMBVtbl; } CStdStubBuffer; typedef struct tagCStdPSFactoryBuffer { const IPSFactoryBufferVtbl *lpVtbl;