- Move SetSystemTime, GetTimeZoneInformation and
[wine/testsucceed.git] / include / wtypes.idl
blobc7013416d4dd046ba1fe3ccf69552901cc139184
1 /*
2 * Basic types used by COM interfaces
4 * Copyright 2002 Ove Kaaven
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
22 uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
23 version(0.1),
24 pointer_default(unique)
26 interface IWinTypes
29 /******************** WINE STUFF ********************/
31 cpp_quote("#include \"basetsd.h\"")
32 cpp_quote("#include \"guiddef.h\"")
34 /* from Wine's pre-WIDL wtypes.h */
35 /* FIXME: does not belong here */
36 cpp_quote("typedef CHAR OLECHAR16;")
37 cpp_quote("typedef LPSTR LPOLESTR16;")
38 cpp_quote("typedef LPCSTR LPCOLESTR16;")
39 cpp_quote("typedef OLECHAR16 *BSTR16;")
40 cpp_quote("typedef BSTR16 *LPBSTR16;")
41 cpp_quote("#define OLESTR16(x) x")
43 /******************** BASIC WIN32 TYPES ********************/
44 cpp_quote("#if 0 /* winnt.h */") /* don't redefine these */
46 typedef unsigned char BYTE;
47 typedef unsigned short WORD;
48 typedef unsigned long DWORD;
49 typedef long BOOL;
50 typedef unsigned char UCHAR;
51 typedef int INT;
52 typedef unsigned int UINT;
53 typedef short SHORT;
54 typedef unsigned short USHORT;
55 typedef long LONG;
56 typedef unsigned long ULONG;
57 typedef float FLOAT;
58 typedef double DOUBLE;
60 typedef void *PVOID, *LPVOID;
62 typedef char CHAR;
63 typedef [string] CHAR *LPSTR;
64 typedef [string] const CHAR *LPCSTR;
66 typedef wchar_t WCHAR;
67 typedef [string] WCHAR *LPWSTR;
68 typedef [string] const WCHAR *LPCWSTR;
70 typedef boolean BOOLEAN;
72 typedef void *HANDLE;
73 #define DECLARE_HANDLE(name) typedef void *name
74 #define DECLARE_WIREM_HANDLE(name) typedef [wire_marshal(wire##name)] void*name
76 typedef double DATE;
77 typedef LONG HRESULT;
78 typedef DWORD LCID;
80 typedef unsigned __int64 DWORDLONG;
81 typedef __int64 LONGLONG;
82 typedef unsigned __int64 ULONGLONG;
84 typedef struct _SID_IDENTIFIER_AUTHORITY {
85 UCHAR Value[6];
86 } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
88 typedef struct _SID {
89 UCHAR Revision;
90 UCHAR SubAuthorityCount;
91 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
92 [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
93 } SID, *PSID;
95 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
97 typedef struct _ACL {
98 UCHAR AclRevision;
99 UCHAR Sbz1;
100 USHORT AclSize;
101 USHORT AceCount;
102 USHORT Sbz2;
103 } ACL;
104 typedef ACL *PACL;
106 typedef struct _SECURITY_DESCRIPTOR {
107 UCHAR Revision;
108 UCHAR Sbz1;
109 SECURITY_DESCRIPTOR_CONTROL Control;
110 PSID Owner;
111 PSID Group;
112 PACL Sacl;
113 PACL Dacl;
114 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
116 cpp_quote("#endif /* winnt.h */")
118 cpp_quote("#ifndef _FILETIME_")
119 cpp_quote("#define _FILETIME_")
120 typedef struct _FILETIME {
121 DWORD dwLowDateTime;
122 DWORD dwHighDateTime;
123 } FILETIME, *PFILETIME, *LPFILETIME;
124 cpp_quote("#endif")
126 /******************** BASIC COM/OLE TYPES ********************/
128 typedef WCHAR OLECHAR;
129 typedef [string] OLECHAR *LPOLESTR;
130 typedef [string] const OLECHAR *LPCOLESTR;
131 cpp_quote("#ifndef __WINE__")
132 cpp_quote("#define OLESTR(str) WINE_UNICODE_TEXT(str)")
133 cpp_quote("#endif")
135 typedef LONG SCODE;
137 typedef struct _COAUTHIDENTITY {
138 [size_is(UserLength+1)] USHORT *User;
139 ULONG UserLength;
140 [size_is(DomainLength+1)] USHORT *Domain;
141 ULONG DomainLength;
142 [size_is(PasswordLength+1)] USHORT *Password;
143 ULONG PasswordLength;
144 ULONG Flags;
145 } COAUTHIDENTITY;
147 typedef struct _COAUTHINFO {
148 DWORD dwAuthnSvc;
149 DWORD dwAuthzSvc;
150 LPWSTR pwszServerPrincName;
151 DWORD dwAuthnLevel;
152 DWORD dwImpersonationLevel;
153 COAUTHIDENTITY *pAuthIdentityData;
154 DWORD dwCapabilities;
155 } COAUTHINFO;
157 /* FIXME: COSERVERINFO was in Wine's pre-WIDL wtypes.h, but should be in objidl.idl */
158 typedef struct _COSERVERINFO {
159 DWORD dwReserved1;
160 LPWSTR pwszName;
161 COAUTHINFO *pAuthInfo;
162 DWORD dwReserved2;
163 } COSERVERINFO;
165 cpp_quote("#ifndef _ROTFLAGS_DEFINED")
166 cpp_quote("#define _ROTFLAGS_DEFINED")
167 cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
168 cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
169 cpp_quote("#endif")
171 typedef enum tagCLSCTX
173 CLSCTX_INPROC_SERVER = 0x1,
174 CLSCTX_INPROC_HANDLER = 0x2,
175 CLSCTX_LOCAL_SERVER = 0x4,
176 CLSCTX_INPROC_SERVER16 = 0x8,
177 CLSCTX_REMOTE_SERVER = 0x10,
178 CLSCTX_INPROC_HANDLER16 = 0x20,
179 CLSCTX_INPROC_SERVERX86 = 0x40,
180 CLSCTX_INPROC_HANDLERX86 = 0x80,
181 CLSCTX_ESERVER_HANDLER = 0x100,
182 CLSCTX_NO_CODE_DOWNLOAD = 0x400,
183 CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
184 CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
185 CLSCTX_NO_FAILURE_LOG = 0x4000,
186 CLSCTX_DISABLE_AAA = 0x8000,
187 CLSCTX_ENABLE_AAA = 0x10000,
188 CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
189 } CLSCTX;
191 cpp_quote("#define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)")
192 cpp_quote("#define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
193 cpp_quote("#define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)")
195 typedef enum tagMSHLFLAGS
197 MSHLFLAGS_NORMAL = 0,
198 MSHLFLAGS_TABLESTRONG = 1,
199 MSHLFLAGS_TABLEWEAK = 2,
200 MSHLFLAGS_NOPING = 4
201 } MSHLFLAGS;
203 typedef enum tagMSHCTX
205 MSHCTX_LOCAL = 0,
206 MSHCTX_NOSHAREDMEM = 1,
207 MSHCTX_DIFFERENTMACHINE = 2,
208 MSHCTX_INPROC = 3,
209 MSHCTX_CROSSCTX = 4
210 } MSHCTX;
212 /******************** BLOB TYPES ********************/
214 typedef struct _BYTE_BLOB {
215 unsigned long clSize;
216 [size_is(clSize)] byte abData[];
217 } BYTE_BLOB;
218 typedef [unique] BYTE_BLOB *UP_BYTE_BLOB;
220 typedef struct _FLAGGED_WORD_BLOB {
221 unsigned long fFlags;
222 unsigned long clSize;
223 [size_is(clSize)] unsigned short asData[];
224 } FLAGGED_WORD_BLOB;
225 typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
227 /******************** GDI TYPES ********************/
229 const unsigned long WDT_INPROC_CALL = 0x48746457;
230 const unsigned long WDT_REMOTE_CALL = 0x52746457;
232 typedef union _userCLIPFORMAT switch(long fContext) {
233 case WDT_INPROC_CALL: DWORD dwValue;
234 case WDT_REMOTE_CALL: [string] WCHAR *pwszName;
235 } userCLIPFORMAT;
237 typedef [unique] userCLIPFORMAT *wireCLIPFORMAT;
238 typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
240 typedef struct tagRemHMETAFILEPICT {
241 long mm;
242 long xExt;
243 long yExt;
244 unsigned long cbData;
245 [size_is(cbData)] byte data[];
246 } RemHMETAFILEPICT;
248 typedef union _userHMETAFILE switch(long fContext) {
249 case WDT_INPROC_CALL: long hInproc;
250 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
251 default: long hGlobal;
252 } userHMETAFILE;
254 typedef [unique] userHMETAFILE *wireHMETAFILE;
256 typedef struct _remoteMETAFILEPICT {
257 long mm;
258 long xExt;
259 long yExt;
260 userHMETAFILE *hMF;
261 } remoteMETAFILEPICT;
263 typedef union _userHMETAFILEPICT switch(long fContext) {
264 case WDT_INPROC_CALL: long hInproc;
265 case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote;
266 default: long hGlobal;
267 } userHMETAFILEPICT;
269 typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT;
271 cpp_quote("#if 0")
272 DECLARE_WIREM_HANDLE(HMETAFILE);
273 cpp_quote("#endif")
274 DECLARE_WIREM_HANDLE(HMETAFILEPICT);
276 /******************** GUID TYPES ********************/
278 cpp_quote("#ifndef GUID_DEFINED")
279 cpp_quote("#define GUID_DEFINED")
280 typedef struct _GUID {
281 DWORD Data1;
282 WORD Data2;
283 WORD Data3;
284 BYTE Data4[8];
285 } GUID;
286 cpp_quote("#endif")
288 cpp_quote("#if 0 /* guiddef.h */")
289 typedef GUID *LPGUID;
290 typedef GUID IID;
291 typedef IID *LPIID;
293 cpp_quote("#if 0") /* for IDL only (C/C++ defs are in guiddef.h) */
294 typedef GUID *REFGUID;
295 typedef IID *REFIID;
296 cpp_quote("#endif")
298 cpp_quote("#endif /* guiddef.h */")
300 /******************** MISC TYPES ********************/
302 typedef enum tagDVASPECT
304 DVASPECT_CONTENT = 1,
305 DVASPECT_THUMBNAIL = 2,
306 DVASPECT_ICON = 4,
307 DVASPECT_DOCPRINT = 8
308 } DVASPECT;
310 typedef enum tagSTGC
312 STGC_DEFAULT = 0,
313 STGC_OVERWRITE = 1,
314 STGC_ONLYIFCURRENT = 2,
315 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
316 STGC_CONSOLIDATE = 8
317 } STGC;
319 typedef enum tagSTGMOVE
321 STGMOVE_MOVE = 0,
322 STGMOVE_COPY = 1,
323 STGMOVE_SHALLOWCOPY = 2
324 } STGMOVE;
326 /******************** OLE Automation ********************/
328 cpp_quote("#if 0") /* for IDL only */
329 typedef struct tagCY {
330 LONGLONG int64;
331 } CY;
332 cpp_quote("#else") /* C/C++ defs */
333 cpp_quote("typedef union tagCY {")
334 cpp_quote(" struct {")
335 cpp_quote("#ifdef WORDS_BIGENDIAN")
336 cpp_quote(" LONG Hi;")
337 cpp_quote(" ULONG Lo;")
338 cpp_quote("#else")
339 cpp_quote(" ULONG Lo;")
340 cpp_quote(" LONG Hi;")
341 cpp_quote("#endif")
342 cpp_quote(" } DUMMYSTRUCTNAME;")
343 cpp_quote(" LONGLONG int64;")
344 cpp_quote("} CY;")
345 cpp_quote("#endif")
347 typedef CY *LPCY;
349 typedef struct tagDEC {
350 USHORT wReserved;
351 BYTE scale;
352 BYTE sign;
353 ULONG Hi32;
354 ULONGLONG Lo64;
355 } DECIMAL;
356 typedef DECIMAL *LPDECIMAL;
358 typedef [unique] FLAGGED_WORD_BLOB *wireBSTR;
359 typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR;
360 typedef BSTR *LPBSTR;
362 typedef short VARIANT_BOOL;
363 typedef VARIANT_BOOL _VARIANT_BOOL;
364 cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)0xFFFF)")
365 cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0x0000)")
367 typedef struct tagBLOB {
368 ULONG cbSize;
369 [size_is(cbSize)] BYTE *pBlobData;
370 } BLOB, *LPBLOB;
372 typedef struct tagCLIPDATA {
373 ULONG cbSize;
374 long ulClipFmt;
375 [size_is(cbSize-4)] BYTE *pClipData;
376 } CLIPDATA;
377 cpp_quote("#define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))")
379 typedef ULONG PROPID;
381 /******************** VARTYPE ********************/
383 typedef unsigned short VARTYPE;
384 /* FIXME: enum VARENUM */
386 } /* interface IWinTypes */