xref: /reactos/sdk/include/psdk/midles.h (revision c2c66aff)
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