[CMAKE]
[reactos.git] / include / psdk / midles.h
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 } MIDL_ES_CODE;
35
36 typedef enum
37 {
38 MES_INCREMENTAL_HANDLE,
39 MES_FIXED_BUFFER_HANDLE,
40 MES_DYNAMIC_BUFFER_HANDLE
41 } MIDL_ES_HANDLE_STYLE;
42
43 typedef void (__RPC_USER * MIDL_ES_ALLOC)(void *,char **,unsigned int *);
44 typedef void (__RPC_USER * MIDL_ES_WRITE)(void *,char *,unsigned int);
45 typedef void (__RPC_USER * MIDL_ES_READ)(void *,char **,unsigned int *);
46
47 typedef struct _MIDL_ES_MESSAGE
48 {
49 MIDL_STUB_MESSAGE StubMsg;
50 MIDL_ES_CODE Operation;
51 void *UserState;
52 ULONG MesVersion : 8;
53 ULONG HandleStyle : 8;
54 ULONG HandleFlags : 8;
55 ULONG Reserve : 8;
56 MIDL_ES_ALLOC Alloc;
57 MIDL_ES_WRITE Write;
58 MIDL_ES_READ Read;
59 unsigned char *Buffer;
60 ULONG BufferSize;
61 unsigned char **pDynBuffer;
62 ULONG *pEncodedSize;
63 RPC_SYNTAX_IDENTIFIER InterfaceId;
64 ULONG ProcNumber;
65 ULONG AlienDataRep;
66 ULONG IncrDataSize;
67 ULONG ByteCount;
68 } MIDL_ES_MESSAGE, *PMIDL_ES_MESSAGE;
69
70 typedef PMIDL_ES_MESSAGE MIDL_ES_HANDLE;
71
72 typedef struct _MIDL_TYPE_PICKLING_INFO
73 {
74 ULONG Version;
75 ULONG Flags;
76 UINT_PTR Reserved[3];
77 } MIDL_TYPE_PICKLING_INFO, *PMIDL_TYPE_PICKLING_INFO;
78
79 RPC_STATUS RPC_ENTRY
80 MesEncodeIncrementalHandleCreate(void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,handle_t *);
81 RPC_STATUS RPC_ENTRY
82 MesDecodeIncrementalHandleCreate(void *,MIDL_ES_READ,handle_t *);
83 RPC_STATUS RPC_ENTRY
84 MesIncrementalHandleReset(handle_t,void *,MIDL_ES_ALLOC,MIDL_ES_WRITE,MIDL_ES_READ,MIDL_ES_CODE);
85
86 RPC_STATUS RPC_ENTRY
87 MesEncodeFixedBufferHandleCreate(char *,ULONG,ULONG *,handle_t *);
88 RPC_STATUS RPC_ENTRY
89 MesEncodeDynBufferHandleCreate(char **,ULONG *,handle_t *);
90 RPC_STATUS RPC_ENTRY
91 MesDecodeBufferHandleCreate(char *,ULONG,handle_t *);
92 RPC_STATUS RPC_ENTRY
93 MesBufferHandleReset(handle_t,ULONG,MIDL_ES_CODE,char **,ULONG,ULONG *);
94
95 RPC_STATUS RPC_ENTRY
96 MesHandleFree(handle_t);
97
98 RPC_STATUS RPC_ENTRY
99 MesInqProcEncodingId(handle_t,PRPC_SYNTAX_IDENTIFIER,ULONG *);
100
101 SIZE_T RPC_ENTRY
102 NdrMesSimpleTypeAlignSize(handle_t);
103 void RPC_ENTRY
104 NdrMesSimpleTypeDecode(handle_t,void *,short);
105 void RPC_ENTRY
106 NdrMesSimpleTypeEncode(handle_t,const MIDL_STUB_DESC *,const void *,short);
107
108 SIZE_T RPC_ENTRY
109 NdrMesTypeAlignSize(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
110 void RPC_ENTRY
111 NdrMesTypeEncode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
112 void RPC_ENTRY
113 NdrMesTypeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
114
115 SIZE_T RPC_ENTRY
116 NdrMesTypeAlignSize2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
117 void RPC_ENTRY
118 NdrMesTypeEncode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,const void *);
119 void RPC_ENTRY
120 NdrMesTypeDecode2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
121 void RPC_ENTRY
122 NdrMesTypeFree2(handle_t,const MIDL_TYPE_PICKLING_INFO *,const MIDL_STUB_DESC *,PFORMAT_STRING,void *);
123
124 void RPC_VAR_ENTRY
125 NdrMesProcEncodeDecode(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...);
126 CLIENT_CALL_RETURN RPC_VAR_ENTRY
127 NdrMesProcEncodeDeocde2(handle_t,const MIDL_STUB_DESC *,PFORMAT_STRING,...);
128
129 #ifdef __cplusplus
130 }
131 #endif
132
133 #endif /* __WINE_MIDLES_H__ */