Reactos
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
27extern "C" {
28#endif
29
30typedef enum
31{
32 MES_ENCODE,
33 MES_DECODE,
34 MES_ENCODE_NDR64
35} MIDL_ES_CODE;
36
37typedef enum
38{
39 MES_INCREMENTAL_HANDLE,
40 MES_FIXED_BUFFER_HANDLE,
41 MES_DYNAMIC_BUFFER_HANDLE
42} MIDL_ES_HANDLE_STYLE;
43
44typedef void (__RPC_USER * MIDL_ES_ALLOC)(void *,char **,unsigned int *);
45typedef void (__RPC_USER * MIDL_ES_WRITE)(void *,char *,unsigned int);
46typedef void (__RPC_USER * MIDL_ES_READ)(void *,char **,unsigned int *);
47
48typedef 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
71typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
72
73typedef 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
80RPC_STATUS RPC_ENTRY
81 MesEncodeIncrementalHandleCreate(void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,handle_t *);
82RPC_STATUS RPC_ENTRY
83 MesDecodeIncrementalHandleCreate(void *,MIDL_ES_READ,handle_t *);
84RPC_STATUS RPC_ENTRY
85 MesIncrementalHandleReset(handle_t,void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,MIDL_ES_READ,MIDL_ES_CODE);
86
87RPC_STATUS RPC_ENTRY
88 MesEncodeFixedBufferHandleCreate(char *,ULONG,ULONG *,handle_t *);
89RPC_STATUS RPC_ENTRY
90 MesEncodeDynBufferHandleCreate(char **,ULONG *,handle_t *);
91RPC_STATUS RPC_ENTRY
92 MesDecodeBufferHandleCreate(char *,ULONG,handle_t *);
93RPC_STATUS RPC_ENTRY
94 MesBufferHandleReset(handle_t,ULONG,MIDL_ES_CODE,char **,ULONG,ULONG *);
95
96RPC_STATUS RPC_ENTRY
97 MesHandleFree(handle_t);
98
99RPC_STATUS RPC_ENTRY
100 MesInqProcEncodingId(handle_t,PRPC_SYNTAX_IDENTIFIER,ULONG *);
101
102SIZE_T RPC_ENTRY
103 NdrMesSimpleTypeAlignSize(handle_t);
104void RPC_ENTRY
105 NdrMesSimpleTypeDecode(handle_t,void *,short);
106void RPC_ENTRY
107 NdrMesSimpleTypeEncode(handle_t,const MIDL_STUB_DESC *,const void *,short);
108
109SIZE_T RPC_ENTRY
110 NdrMesTypeAlignSize(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
111void RPC_ENTRY
112 NdrMesTypeEncode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
113void RPC_ENTRY
114 NdrMesTypeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
115
116SIZE_T RPC_ENTRY
117 NdrMesTypeAlignSize2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
118void RPC_ENTRY
119 NdrMesTypeEncode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
120void RPC_ENTRY
121 NdrMesTypeDecode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
122void RPC_ENTRY
123 NdrMesTypeFree2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
124
125void RPC_VAR_ENTRY
126 NdrMesProcEncodeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...);
127CLIENT_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__ */