1 /* 2 * NDR Serialization Services 3 * 4 * Copyright (c) 2007 Robert Shearman for CodeWeavers 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21 #ifndef __WINE_MIDLES_H__ 22 #define __WINE_MIDLES_H__ 23 24 #include <rpcndr.h> 25 26 #ifdef __cplusplus 27 extern "C" { 28 #endif 29 30 typedef enum 31 { 32 MES_ENCODE, 33 MES_DECODE, 34 MES_ENCODE_NDR64 35 } MIDL_ES_CODE; 36 37 typedef enum 38 { 39 MES_INCREMENTAL_HANDLE, 40 MES_FIXED_BUFFER_HANDLE, 41 MES_DYNAMIC_BUFFER_HANDLE 42 } MIDL_ES_HANDLE_STYLE; 43 44 typedef void (__RPC_USER * MIDL_ES_ALLOC)(void *,char **,unsigned int *); 45 typedef void (__RPC_USER * MIDL_ES_WRITE)(void *,char *,unsigned int); 46 typedef void (__RPC_USER * MIDL_ES_READ)(void *,char **,unsigned int *); 47 48 typedef struct _MIDL_ES_MESSAGE 49 { 50 MIDL_STUB_MESSAGE StubMsg; 51 MIDL_ES_CODE Operation; 52 void *UserState; 53 ULONG MesVersion : 8; 54 ULONG HandleStyle : 8; 55 ULONG HandleFlags : 8; 56 ULONG Reserve : 8; 57 MIDL_ES_ALLOC Alloc; 58 MIDL_ES_WRITE Write; 59 MIDL_ES_READ Read; 60 unsigned char *Buffer; 61 ULONG BufferSize; 62 unsigned char **pDynBuffer; 63 ULONG *pEncodedSize; 64 RPC_SYNTAX_IDENTIFIER InterfaceId; 65 ULONG ProcNumber; 66 ULONG AlienDataRep; 67 ULONG IncrDataSize; 68 ULONG ByteCount; 69 } MIDL_ES_MESSAGE, *PMIDL_ES_MESSAGE; 70 71 typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE; 72 73 typedef struct _MIDL_TYPE_PICKLING_INFO 74 { 75 ULONG Version; 76 ULONG Flags; 77 UINT_PTR Reserved[3]; 78 } MIDL_TYPE_PICKLING_INFO, *PMIDL_TYPE_PICKLING_INFO; 79 80 RPC_STATUS RPC_ENTRY 81 MesEncodeIncrementalHandleCreate(void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,handle_t *); 82 RPC_STATUS RPC_ENTRY 83 MesDecodeIncrementalHandleCreate(void *,MIDL_ES_READ,handle_t *); 84 RPC_STATUS RPC_ENTRY 85 MesIncrementalHandleReset(handle_t,void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,MIDL_ES_READ,MIDL_ES_CODE); 86 87 RPC_STATUS RPC_ENTRY 88 MesEncodeFixedBufferHandleCreate(char *,ULONG,ULONG *,handle_t *); 89 RPC_STATUS RPC_ENTRY 90 MesEncodeDynBufferHandleCreate(char **,ULONG *,handle_t *); 91 RPC_STATUS RPC_ENTRY 92 MesDecodeBufferHandleCreate(char *,ULONG,handle_t *); 93 RPC_STATUS RPC_ENTRY 94 MesBufferHandleReset(handle_t,ULONG,MIDL_ES_CODE,char **,ULONG,ULONG *); 95 96 RPC_STATUS RPC_ENTRY 97 MesHandleFree(handle_t); 98 99 RPC_STATUS RPC_ENTRY 100 MesInqProcEncodingId(handle_t,PRPC_SYNTAX_IDENTIFIER,ULONG *); 101 102 SIZE_T RPC_ENTRY 103 NdrMesSimpleTypeAlignSize(handle_t); 104 void RPC_ENTRY 105 NdrMesSimpleTypeDecode(handle_t,void *,short); 106 void RPC_ENTRY 107 NdrMesSimpleTypeEncode(handle_t,const MIDL_STUB_DESC *,const void *,short); 108 109 SIZE_T RPC_ENTRY 110 NdrMesTypeAlignSize(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *); 111 void RPC_ENTRY 112 NdrMesTypeEncode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *); 113 void RPC_ENTRY 114 NdrMesTypeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,void *); 115 116 SIZE_T RPC_ENTRY 117 NdrMesTypeAlignSize2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *); 118 void RPC_ENTRY 119 NdrMesTypeEncode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *); 120 void RPC_ENTRY 121 NdrMesTypeDecode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *); 122 void RPC_ENTRY 123 NdrMesTypeFree2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *); 124 125 void RPC_VAR_ENTRY 126 NdrMesProcEncodeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...); 127 CLIENT_CALL_RETURN RPC_VAR_ENTRY 128 NdrMesProcEncodeDeocde2(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...); 129 130 #ifdef __cplusplus 131 } 132 #endif 133 134 #endif /* __WINE_MIDLES_H__ */ 135