msvcrt: Fixed fgetwc behavior on multibyte characters and Unicode files.
[wine] / include / 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__ */