Include rpc.h after LPOLESTR and other needed types are defined.
[wine] / include / wtypes.h
1 /*
2  * Defines the basic types used by COM interfaces.
3  *
4  * Copyright (C) the Wine project
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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_WTYPES_H
22 #define __WINE_WTYPES_H
23 typedef void* HMETAFILEPICT;
24
25 typedef WORD CLIPFORMAT, *LPCLIPFORMAT;
26
27 /* FIXME: does not belong here */
28 typedef CHAR            OLECHAR16;
29 typedef LPSTR           LPOLESTR16;
30 typedef LPCSTR          LPCOLESTR16;
31 typedef OLECHAR16       *BSTR16;
32 typedef BSTR16          *LPBSTR16;
33 #define OLESTR16(x) x
34
35 typedef WCHAR           OLECHAR;
36 typedef LPWSTR          LPOLESTR;
37 typedef LPCWSTR         LPCOLESTR;
38 typedef OLECHAR        *BSTR;
39 typedef BSTR           *LPBSTR;
40 #ifndef __WINE__
41 #define OLESTR(str)     WINE_UNICODE_TEXT(str)
42 #endif
43
44 #ifndef _DWORDLONG_
45 #define _DWORDLONG_
46 typedef unsigned __int64 DWORDLONG, *PDWORDLONG;
47 #endif
48
49 #ifndef _ULONGLONG_
50 #define _ULONGLONG_
51 typedef signed __int64   LONGLONG, *PLONGLONG;
52 typedef unsigned __int64 ULONGLONG, *PULONGLONG;
53 #endif
54
55 typedef enum tagDVASPECT
56 {
57        DVASPECT_CONTENT   = 1,
58        DVASPECT_THUMBNAIL = 2,
59        DVASPECT_ICON      = 4,
60        DVASPECT_DOCPRINT  = 8
61 } DVASPECT;
62
63 typedef enum tagSTGC
64 {
65         STGC_DEFAULT = 0,
66         STGC_OVERWRITE = 1,
67         STGC_ONLYIFCURRENT = 2,
68         STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
69         STGC_CONSOLIDATE = 8
70 } STGC;
71
72 typedef enum tagSTGMOVE
73 {
74         STGMOVE_MOVE = 0,
75         STGMOVE_COPY = 1,
76         STGMOVE_SHALLOWCOPY = 2
77 } STGMOVE;
78
79
80 typedef struct _COAUTHIDENTITY
81 {
82     USHORT* User;
83     ULONG UserLength;
84     USHORT* Domain;
85     ULONG DomainLength;
86     USHORT* Password;
87     ULONG PasswordLength;
88     ULONG Flags;
89 } COAUTHIDENTITY;
90
91 typedef struct _COAUTHINFO
92 {
93     DWORD dwAuthnSvc;
94     DWORD dwAuthzSvc;
95     LPWSTR pwszServerPrincName;
96     DWORD dwAuthnLevel;
97     DWORD dwImpersonationLevel;
98     COAUTHIDENTITY* pAuthIdentityData;
99     DWORD dwCapabilities;
100 } COAUTHINFO;
101
102 typedef struct _COSERVERINFO
103 {
104     DWORD dwReserved1;
105     LPWSTR pwszName;
106     COAUTHINFO* pAuthInfo;
107     DWORD dwReserved2;
108 } COSERVERINFO;
109
110 typedef enum tagCLSCTX
111 {
112     CLSCTX_INPROC_SERVER     = 0x1,
113     CLSCTX_INPROC_HANDLER    = 0x2,
114     CLSCTX_LOCAL_SERVER      = 0x4,
115     CLSCTX_INPROC_SERVER16   = 0x8,
116     CLSCTX_REMOTE_SERVER     = 0x10,
117     CLSCTX_INPROC_HANDLER16  = 0x20,
118     CLSCTX_INPROC_SERVERX86  = 0x40,
119     CLSCTX_INPROC_HANDLERX86 = 0x80,
120     CLSCTX_ESERVER_HANDLER   = 0x100,
121     CLSCTX_NO_CODE_DOWNLOAD  = 0x400,
122     CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
123     CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
124     CLSCTX_NO_FAILURE_LOG   = 0x4000,
125     CLSCTX_DISABLE_AAA      = 0x8000,
126     CLSCTX_ENABLE_AAA       = 0x10000,
127     CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
128 } CLSCTX;
129
130 #define CLSCTX_INPROC           (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
131 #define CLSCTX_ALL              (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
132 #define CLSCTX_SERVER           (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
133
134 typedef enum tagMSHLFLAGS
135 {
136     MSHLFLAGS_NORMAL        = 0,
137     MSHLFLAGS_TABLESTRONG   = 1,
138     MSHLFLAGS_TABLEWEAK     = 2,
139     MSHLFLAGS_NOPING        = 4
140 } MSHLFLAGS;
141
142 typedef enum tagMSHCTX
143 {
144     MSHCTX_LOCAL            = 0,
145     MSHCTX_NOSHAREDMEM      = 1,
146     MSHCTX_DIFFERENTMACHINE = 2,
147     MSHCTX_INPROC           = 3,
148     MSHCTX_CROSSCTX         = 4
149 } MSHCTX;
150
151 typedef unsigned short VARTYPE;
152
153 typedef ULONG PROPID;
154
155 #ifndef _tagBLOB_DEFINED
156 #define _tagBLOB_DEFINED
157 #define _BLOB_DEFINED
158 #define _LPBLOB_DEFINED
159 typedef struct tagBLOB
160 {
161     ULONG cbSize;
162     BYTE *pBlobData;
163 } BLOB, *LPBLOB;
164 #endif
165
166 #ifndef _tagCY_DEFINED
167 #define _tagCY_DEFINED
168
169 typedef union tagCY {
170     struct {
171 #ifdef WORDS_BIGENDIAN
172         LONG  Hi;
173         ULONG Lo;
174 #else
175         ULONG Lo;
176         LONG  Hi;
177 #endif
178     } DUMMYSTRUCTNAME;
179     LONGLONG int64;
180 } CY;
181
182 #endif /* _tagCY_DEFINED */
183
184 typedef struct tagDEC {
185     USHORT wReserved;
186     union {
187         struct {
188             BYTE scale;
189             BYTE sign;
190         } DUMMYSTRUCTNAME1;
191         USHORT signscale;
192     } DUMMYUNIONNAME1;
193     ULONG Hi32;
194     union {
195         struct {
196 #ifdef WORDS_BIGENDIAN
197             ULONG Mid32;
198             ULONG Lo32;
199 #else
200             ULONG Lo32;
201             ULONG Mid32;
202 #endif
203         } DUMMYSTRUCTNAME2;
204         ULONGLONG Lo64;
205     } DUMMYUNIONNAME2;
206 } DECIMAL;
207
208 #define DECIMAL_NEG ((BYTE)0x80)
209 #ifndef NONAMELESSUNION
210 #define DECIMAL_SETZERO(d) \
211         do {(d).Lo64 = 0; (d).Hi32 = 0; (d).signscale = 0;} while (0)
212 #else
213 #define DECIMAL_SETZERO(d) \
214         do {(d).u2.Lo64 = 0; (d).Hi32 = 0; (d).u1.signscale = 0;} while (0)
215 #endif
216
217 /*
218  * 0 == FALSE and -1 == TRUE
219  */
220 #define VARIANT_TRUE     ((VARIANT_BOOL)0xFFFF)
221 #define VARIANT_FALSE    ((VARIANT_BOOL)0x0000)
222 typedef short VARIANT_BOOL,_VARIANT_BOOL;
223
224 typedef struct tagCLIPDATA
225 {
226     ULONG cbSize;
227     long ulClipFmt;
228     BYTE *pClipData;
229 } CLIPDATA;
230
231 /* Macro to calculate the size of the above pClipData */
232 #define CBPCLIPDATA(clipdata)    ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
233
234 typedef LONG SCODE;
235
236 #ifndef _FILETIME_
237 #define _FILETIME_
238 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
239 typedef struct
240 {
241   DWORD  dwLowDateTime;
242   DWORD  dwHighDateTime;
243 } FILETIME, *LPFILETIME;
244 #endif /* _FILETIME_ */
245
246 #ifndef _SECURITY_DEFINED
247 #define _SECURITY_DEFINED
248
249 typedef struct {
250     BYTE Value[6];
251 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
252
253 typedef struct _SID {
254     BYTE Revision;
255     BYTE SubAuthorityCount;
256     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
257     DWORD SubAuthority[1];
258 } SID,*PSID;
259
260 /*
261  * ACL
262  */
263
264 typedef struct _ACL {
265     BYTE AclRevision;
266     BYTE Sbz1;
267     WORD AclSize;
268     WORD AceCount;
269     WORD Sbz2;
270 } ACL, *PACL;
271
272 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
273
274 /* The security descriptor structure */
275 typedef struct {
276     BYTE Revision;
277     BYTE Sbz1;
278     SECURITY_DESCRIPTOR_CONTROL Control;
279     PSID Owner;
280     PSID Group;
281     PACL Sacl;
282     PACL Dacl;
283 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
284
285 #endif /* _SECURITY_DEFINED */
286
287 #ifndef _ROTFLAGS_DEFINED
288 #define _ROTFLAGS_DEFINED
289 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
290 #define ROTFLAGS_ALLOWANYCLIENT 0x2
291 #endif /* !defined(_ROTFLAGS_DEFINED) */
292
293 #include "rpc.h"
294 #include "rpcndr.h"
295
296 #include "basetsd.h"
297 #include "guiddef.h"
298
299 #endif /* __WINE_WTYPES_H */