Wait for the asynchronous update thread to complete if the app
[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
24 #include "basetsd.h"
25 #include "guiddef.h"
26 #include "rpc.h"
27 #include "rpcndr.h"
28
29 typedef void* HMETAFILEPICT;
30
31 typedef WORD CLIPFORMAT, *LPCLIPFORMAT;
32
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
40
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
49
50 #ifndef _DWORDLONG_
51 #define _DWORDLONG_
52 typedef __uint64 DWORDLONG, *PDWORDLONG;
53 #endif
54
55 #ifndef _ULONGLONG_
56 #define _ULONGLONG_
57 typedef __int64 LONGLONG, *PLONGLONG;
58 typedef __uint64 ULONGLONG, *PULONGLONG;
59 #endif
60
61 typedef enum tagDVASPECT
62 {
63        DVASPECT_CONTENT   = 1,
64        DVASPECT_THUMBNAIL = 2,
65        DVASPECT_ICON      = 4,
66        DVASPECT_DOCPRINT  = 8
67 } DVASPECT;
68
69 typedef enum tagSTGC
70 {
71         STGC_DEFAULT = 0,
72         STGC_OVERWRITE = 1,
73         STGC_ONLYIFCURRENT = 2,
74         STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
75         STGC_CONSOLIDATE = 8
76 } STGC;
77
78 typedef enum tagSTGMOVE
79 {
80         STGMOVE_MOVE = 0,
81         STGMOVE_COPY = 1,
82         STGMOVE_SHALLOWCOPY = 2
83 } STGMOVE;
84
85
86 typedef struct _COAUTHIDENTITY
87 {
88     USHORT* User;
89     ULONG UserLength;
90     USHORT* Domain;
91     ULONG DomainLength;
92     USHORT* Password;
93     ULONG PasswordLength;
94     ULONG Flags;
95 } COAUTHIDENTITY;
96
97 typedef struct _COAUTHINFO
98 {
99     DWORD dwAuthnSvc;
100     DWORD dwAuthzSvc;
101     LPWSTR pwszServerPrincName;
102     DWORD dwAuthnLevel;
103     DWORD dwImpersonationLevel;
104     COAUTHIDENTITY* pAuthIdentityData;
105     DWORD dwCapabilities;
106 } COAUTHINFO;
107
108 typedef struct _COSERVERINFO
109 {
110     DWORD dwReserved1;
111     LPWSTR pwszName;
112     COAUTHINFO* pAuthInfo;
113     DWORD dwReserved2;
114 } COSERVERINFO;
115
116 typedef enum tagCLSCTX
117 {
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;
128
129 #define CLSCTX_INPROC           (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
130 #define CLSCTX_ALL              (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
131 #define CLSCTX_SERVER           (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
132
133 typedef enum tagMSHLFLAGS
134 {
135     MSHLFLAGS_NORMAL        = 0,
136     MSHLFLAGS_TABLESTRONG   = 1,
137     MSHLFLAGS_TABLEWEAK     = 2,
138     MSHLFLAGS_NOPING        = 4
139 } MSHLFLAGS;
140
141 typedef enum tagMSHCTX
142 {
143     MSHCTX_LOCAL            = 0,
144     MSHCTX_NOSHAREDMEM      = 1,
145     MSHCTX_DIFFERENTMACHINE = 2,
146     MSHCTX_INPROC           = 3
147 } MSHCTX;
148
149 typedef unsigned short VARTYPE;
150
151 typedef ULONG PROPID;
152
153 #ifndef _tagBLOB_DEFINED
154 #define _tagBLOB_DEFINED
155 #define _BLOB_DEFINED
156 #define _LPBLOB_DEFINED
157 typedef struct tagBLOB
158 {
159     ULONG cbSize;
160     BYTE *pBlobData;
161 } BLOB, *LPBLOB;
162 #endif
163
164 #ifndef _tagCY_DEFINED
165 #define _tagCY_DEFINED
166
167 typedef union tagCY {
168     struct {
169 #ifdef WORDS_BIGENDIAN
170         LONG  Hi;
171         ULONG Lo;
172 #else
173         ULONG Lo;
174         LONG  Hi;
175 #endif
176     } DUMMYSTRUCTNAME;
177     LONGLONG int64;
178 } CY;
179
180 #endif /* _tagCY_DEFINED */
181
182 typedef struct tagDEC {
183     USHORT wReserved;
184     union {
185         struct {
186             BYTE scale;
187             BYTE sign;
188         } DUMMYSTRUCTNAME1;
189         USHORT signscale;
190     } DUMMYUNIONNAME1;
191     ULONG Hi32;
192     union {
193         struct {
194 #ifdef WORDS_BIGENDIAN
195             ULONG Mid32;
196             ULONG Lo32;
197 #else
198             ULONG Lo32;
199             ULONG Mid32;
200 #endif
201         } DUMMYSTRUCTNAME2;
202         ULONGLONG Lo64;
203     } DUMMYUNIONNAME2;
204 } DECIMAL;
205
206 #define DECIMAL_NEG ((BYTE)0x80)
207 #ifndef NONAMELESSUNION
208 #define DECIMAL_SETZERO(d) \
209         do {(d).Lo64 = 0; (d).Hi32 = 0; (d).signscale = 0;} while (0)
210 #else
211 #define DECIMAL_SETZERO(d) \
212         do {(d).u2.Lo64 = 0; (d).Hi32 = 0; (d).u1.signscale = 0;} while (0)
213 #endif
214
215 /*
216  * 0 == FALSE and -1 == TRUE
217  */
218 #define VARIANT_TRUE     ((VARIANT_BOOL)0xFFFF)
219 #define VARIANT_FALSE    ((VARIANT_BOOL)0x0000)
220 typedef short VARIANT_BOOL,_VARIANT_BOOL;
221
222 typedef struct tagCLIPDATA
223 {
224     ULONG cbSize;
225     long ulClipFmt;
226     BYTE *pClipData;
227 } CLIPDATA;
228
229 /* Macro to calculate the size of the above pClipData */
230 #define CBPCLIPDATA(clipdata)    ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
231
232 typedef LONG SCODE;
233
234 #ifndef _FILETIME_
235 #define _FILETIME_
236 /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */
237 typedef struct
238 {
239   DWORD  dwLowDateTime;
240   DWORD  dwHighDateTime;
241 } FILETIME, *LPFILETIME;
242 #endif /* _FILETIME_ */
243
244 #ifndef _SECURITY_DEFINED
245 #define _SECURITY_DEFINED
246
247 typedef struct {
248     BYTE Value[6];
249 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
250
251 typedef struct _SID {
252     BYTE Revision;
253     BYTE SubAuthorityCount;
254     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
255     DWORD SubAuthority[1];
256 } SID,*PSID;
257
258 /*
259  * ACL
260  */
261
262 typedef struct _ACL {
263     BYTE AclRevision;
264     BYTE Sbz1;
265     WORD AclSize;
266     WORD AceCount;
267     WORD Sbz2;
268 } ACL, *PACL;
269
270 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
271
272 /* The security descriptor structure */
273 typedef struct {
274     BYTE Revision;
275     BYTE Sbz1;
276     SECURITY_DESCRIPTOR_CONTROL Control;
277     PSID Owner;
278     PSID Group;
279     PACL Sacl;
280     PACL Dacl;
281 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
282
283 #endif /* _SECURITY_DEFINED */
284
285 #ifndef _ROTFLAGS_DEFINED
286 #define _ROTFLAGS_DEFINED
287 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
288 #define ROTFLAGS_ALLOWANYCLIENT 0x2
289 #endif /* !defined(_ROTFLAGS_DEFINED) */
290
291 #endif /* __WINE_WTYPES_H */