From 522cecf67cd81496bc56a35fc60a799f3f8b79de Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Tue, 23 Apr 2024 11:26:51 +0200 Subject: [PATCH] include: Update a couple of RPC structures. --- dlls/rpcrt4/ndr_clientserver.c | 6 +-- dlls/rpcrt4/tests/generated.c | 12 ++--- dlls/rpcrt4/tests/ndr_marshall.c | 10 ++-- include/rpcndr.h | 81 +++++++++++++++++++++++++------- include/rpcproxy.h | 9 +--- 5 files changed, 79 insertions(+), 39 deletions(-) diff --git a/dlls/rpcrt4/ndr_clientserver.c b/dlls/rpcrt4/ndr_clientserver.c index d4ba2ffa5e0..e67046e4c08 100644 --- a/dlls/rpcrt4/ndr_clientserver.c +++ b/dlls/rpcrt4/ndr_clientserver.c @@ -78,7 +78,6 @@ void WINAPI NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg->PointerLength = 0; pStubMsg->fInDontFree = 0; pStubMsg->fDontCallFreeInst = 0; - pStubMsg->fInOnlyParam = 0; pStubMsg->fHasReturn = 0; pStubMsg->fHasExtensions = 0; pStubMsg->fHasNewCorrDesc = 0; @@ -89,7 +88,7 @@ void WINAPI NdrClientInitializeNew( PRPC_MESSAGE pRpcMessage, PMIDL_STUB_MESSAGE pStubMsg->fHasMemoryValidateCallback = 0; pStubMsg->fInFree = 0; pStubMsg->fNeedMCCP = 0; - pStubMsg->fUnused = 0; + pStubMsg->fUnused2 = 0; pStubMsg->dwDestContext = MSHCTX_DIFFERENTMACHINE; pStubMsg->pvDestContext = NULL; pStubMsg->pRpcChannelBuffer = NULL; @@ -132,7 +131,6 @@ unsigned char* WINAPI NdrServerInitializeNew( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_M pStubMsg->PointerLength = 0; pStubMsg->fInDontFree = 0; pStubMsg->fDontCallFreeInst = 0; - pStubMsg->fInOnlyParam = 0; pStubMsg->fHasReturn = 0; pStubMsg->fHasExtensions = 0; pStubMsg->fHasNewCorrDesc = 0; @@ -142,7 +140,7 @@ unsigned char* WINAPI NdrServerInitializeNew( PRPC_MESSAGE pRpcMsg, PMIDL_STUB_M pStubMsg->fHasMemoryValidateCallback = 0; pStubMsg->fInFree = 0; pStubMsg->fNeedMCCP = 0; - pStubMsg->fUnused = 0; + pStubMsg->fUnused2 = 0; pStubMsg->dwDestContext = MSHCTX_DIFFERENTMACHINE; pStubMsg->pvDestContext = NULL; pStubMsg->pRpcChannelBuffer = NULL; diff --git a/dlls/rpcrt4/tests/generated.c b/dlls/rpcrt4/tests/generated.c index 53416566418..57e2a387cf1 100644 --- a/dlls/rpcrt4/tests/generated.c +++ b/dlls/rpcrt4/tests/generated.c @@ -686,9 +686,9 @@ static void test_pack_MIDL_SYNTAX_INFO(void) TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, aUserMarshalQuadruple, 8) TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, aUserMarshalQuadruple, 8) TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, aUserMarshalQuadruple, 56) - TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, pReserved1, 8) - TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, pReserved1, 8) - TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, pReserved1, 64) + TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, pMethodProperties, 8) + TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, pMethodProperties, 8) + TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, pMethodProperties, 64) TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, pReserved2, 8) TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, pReserved2, 8) TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, pReserved2, 72) @@ -1548,9 +1548,9 @@ static void test_pack_MIDL_SYNTAX_INFO(void) TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, aUserMarshalQuadruple, 4) TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, aUserMarshalQuadruple, 4) TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, aUserMarshalQuadruple, 36) - TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, pReserved1, 4) - TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, pReserved1, 4) - TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, pReserved1, 40) + TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, pMethodProperties, 4) + TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, pMethodProperties, 4) + TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, pMethodProperties, 40) TEST_FIELD_SIZE (MIDL_SYNTAX_INFO, pReserved2, 4) TEST_FIELD_ALIGN (MIDL_SYNTAX_INFO, pReserved2, 4) TEST_FIELD_OFFSET(MIDL_SYNTAX_INFO, pReserved2, 44) diff --git a/dlls/rpcrt4/tests/ndr_marshall.c b/dlls/rpcrt4/tests/ndr_marshall.c index d86f3b0556e..e16c8d40e93 100644 --- a/dlls/rpcrt4/tests/ndr_marshall.c +++ b/dlls/rpcrt4/tests/ndr_marshall.c @@ -1728,11 +1728,11 @@ static void test_common_stub_data( const char *prefix, const MIDL_STUB_MESSAGE * ok(stubMsg->fBufferValid == 0, "%s: fBufferValid should have been set to 0 instead of %d\n", prefix, stubMsg->fBufferValid); TEST_ZERO(fNeedMCCP, "%d"); - ok(stubMsg->fUnused == 0 || - stubMsg->fUnused == -2, /* Vista */ - "%s: fUnused should have been set to 0 or -2 instead of %d\n", prefix, stubMsg->fUnused); - ok(stubMsg->fUnused2 == 0xffffcccc, "%s: fUnused2 should have been 0xffffcccc instead of 0x%x\n", - prefix, stubMsg->fUnused2); + ok(stubMsg->fUnused2 == 0 || + stubMsg->fUnused2 == -2, /* Vista */ + "%s: fUnused2 should have been set to 0 or -2 instead of %d\n", prefix, stubMsg->fUnused2); + ok(stubMsg->fUnused3 == 0xffffcccc, "%s: fUnused3 should have been 0xffffcccc instead of 0x%x\n", + prefix, stubMsg->fUnused3); ok(stubMsg->dwDestContext == MSHCTX_DIFFERENTMACHINE, "%s: dwDestContext should have been MSHCTX_DIFFERENTMACHINE instead of %ld\n", prefix, stubMsg->dwDestContext); diff --git a/include/rpcndr.h b/include/rpcndr.h index 15698a8778a..93ebb0a4aa7 100644 --- a/include/rpcndr.h +++ b/include/rpcndr.h @@ -71,6 +71,11 @@ typedef INT64 hyper; typedef UINT64 MIDL_uhyper; typedef unsigned char boolean; +#ifndef _ERROR_STATUS_T_DEFINED +typedef ULONG error_status_t; +#define _ERROR_STATUS_T_DEFINED +#endif + #define __RPC_CALLEE WINAPI #define RPC_VAR_ENTRY WINAPIV #define NDR_SHAREABLE static @@ -179,7 +184,7 @@ typedef struct _MIDL_STUB_MESSAGE ULONG PointerLength; unsigned int fInDontFree:1; unsigned int fDontCallFreeInst:1; - unsigned int fInOnlyParam:1; + unsigned int fUnused1 :1; unsigned int fHasReturn:1; unsigned int fHasExtensions:1; unsigned int fHasNewCorrDesc:1; @@ -190,8 +195,8 @@ typedef struct _MIDL_STUB_MESSAGE unsigned int fHasMemoryValidateCallback:1; unsigned int fInFree:1; unsigned int fNeedMCCP:1; - int fUnused:3; - int fUnused2:16; + int fUnused2:3; + int fUnused3:16; DWORD dwDestContext; void *pvDestContext; NDR_SCONTEXT *SavedContextHandles; @@ -303,6 +308,39 @@ typedef struct _COMM_FAULT_OFFSETS short FaultOffset; } COMM_FAULT_OFFSETS; +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,ULONG,ULONG,IDL_CS_CONVERT*,ULONG*,error_status_t*); +typedef void (__RPC_USER * CS_TYPE_TO_NETCS_ROUTINE)(RPC_BINDING_HANDLE,ULONG,void*,ULONG,byte*,ULONG*,error_status_t*); +typedef void (__RPC_USER * CS_TYPE_LOCAL_SIZE_ROUTINE)(RPC_BINDING_HANDLE,ULONG,ULONG,IDL_CS_CONVERT*,ULONG*,error_status_t*); +typedef void (__RPC_USER * CS_TYPE_FROM_NETCS_ROUTINE)(RPC_BINDING_HANDLE,ULONG,byte*,ULONG,ULONG,void*,ULONG*,error_status_t*); +typedef void (__RPC_USER * CS_TAG_GETTING_ROUTINE)(RPC_BINDING_HANDLE,int,ULONG*,ULONG*,ULONG*,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 _NDR_EXPR_DESC +{ + const unsigned short *pOffset; + PFORMAT_STRING pFormatExpr; +} NDR_EXPR_DESC; + typedef struct _MIDL_STUB_DESC { void *RpcInterfaceInformation; @@ -326,22 +364,36 @@ typedef struct _MIDL_STUB_DESC const USER_MARSHAL_ROUTINE_QUADRUPLE *aUserMarshalQuadruple; const NDR_NOTIFY_ROUTINE *NotifyRoutineTable; ULONG_PTR mFlags; - ULONG_PTR Reserved3; - ULONG_PTR Reserved4; - ULONG_PTR Reserved5; + const NDR_CS_ROUTINES *CsRoutineTables; + void *ProxyServerInfo; + const NDR_EXPR_DESC *pExprInfo; } MIDL_STUB_DESC; typedef const MIDL_STUB_DESC *PMIDL_STUB_DESC; typedef struct _MIDL_FORMAT_STRING { short Pad; -#if defined(__GNUC__) - unsigned char Format[0]; -#else - unsigned char Format[1]; -#endif + unsigned char Format[]; } MIDL_FORMAT_STRING; +typedef struct _MIDL_METHOD_PROPERTY +{ + ULONG Id; + ULONG_PTR Value; +} MIDL_METHOD_PROPERTY, *PMIDL_METHOD_PROPERTY; + +typedef struct _MIDL_METHOD_PROPERTY_MAP +{ + ULONG Count; + const MIDL_METHOD_PROPERTY *Properties; +} MIDL_METHOD_PROPERTY_MAP, *PMIDL_METHOD_PROPERTY_MAP; + +typedef struct _MIDL_INTERFACE_METHOD_PROPERTIES +{ + unsigned short MethodCount; + const MIDL_METHOD_PROPERTY_MAP * const *MethodProperties; +} MIDL_INTERFACE_METHOD_PROPERTIES; + typedef struct _MIDL_SYNTAX_INFO { RPC_SYNTAX_IDENTIFIER TransferSyntax; @@ -350,7 +402,7 @@ typedef struct _MIDL_SYNTAX_INFO const unsigned short* FmtStringOffset; PFORMAT_STRING TypeString; const void* aUserMarshalQuadruple; - ULONG_PTR pReserved1; + const MIDL_INTERFACE_METHOD_PROPERTIES *pMethodProperties; ULONG_PTR pReserved2; } MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO; @@ -443,11 +495,6 @@ typedef struct _FULL_PTR_XLAT_TABLES { struct IRpcStubBuffer; -#ifndef _ERROR_STATUS_T_DEFINED -typedef ULONG error_status_t; -#define _ERROR_STATUS_T_DEFINED -#endif - typedef void * NDR_CCONTEXT; typedef struct _SCONTEXT_QUEUE { diff --git a/include/rpcproxy.h b/include/rpcproxy.h index 8d4ab259af5..7c52101e1b1 100644 --- a/include/rpcproxy.h +++ b/include/rpcproxy.h @@ -17,8 +17,7 @@ */ #ifndef __RPCPROXY_H_VERSION__ -/* FIXME: Find an appropriate version number. I guess something is better than nothing */ -#define __RPCPROXY_H_VERSION__ ( 399 ) +#define __RPCPROXY_H_VERSION__ (477) #endif #ifndef __WINE_RPCPROXY_H @@ -78,11 +77,7 @@ typedef struct tagCInterfaceProxyHeader typedef struct tagCInterfaceProxyVtbl { CInterfaceProxyHeader header; -#if defined(__GNUC__) - void *Vtbl[0]; -#else - void *Vtbl[1]; -#endif + void *Vtbl[]; } CInterfaceProxyVtbl; typedef void (__RPC_STUB *PRPC_STUB_FUNCTION)(