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