blob: 4ffe87e17546d8915bf91a8f16a788cf83b308b2 [file] [log] [blame]
Jacek Cabanfa634ec2011-09-03 10:31:21 +00001/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6
7import "basetsd.h";
8import "guiddef.h";
9
Jacek Caban81c3ea72011-09-03 10:43:31 +000010[
11 uuid(D3980A60-910C-1068-9341-00DD010F2F1C),
12 version(0.1),
13 pointer_default(unique)
14]
15
16interface IWinTypes
17{
Jacek Caban650843a2011-12-30 16:30:59 +000018 typedef struct tagRemHGLOBAL {
19 long fNullHGlobal;
20 unsigned long cbData;
21 [size_is(cbData)] byte data[];
22 } RemHGLOBAL;
23
24 typedef struct tagRemHMETAFILEPICT {
25 long mm;
26 long xExt;
27 long yExt;
28 unsigned long cbData;
29 [size_is(cbData)] byte data[];
30 } RemHMETAFILEPICT;
31
32 typedef struct tagRemHENHMETAFILE {
33 unsigned long cbData;
34 [size_is(cbData)] byte data[];
35 } RemHENHMETAFILE;
36
37 typedef struct tagRemHBITMAP {
38 unsigned long cbData;
39 [size_is(cbData)] byte data[];
40 } RemHBITMAP;
41
42 typedef struct tagRemHPALETTE {
43 unsigned long cbData;
44 [size_is(cbData)] byte data[];
45 } RemHPALETTE;
46
47 typedef struct tagRemBRUSH {
48 unsigned long cbData;
49 [size_is(cbData)] byte data[];
50 } RemHBRUSH;
Jacek Caban81c3ea72011-09-03 10:43:31 +000051
52cpp_quote("#if 0")
Jacek Caban9f2b3d52011-09-03 10:43:45 +000053
Jacek Caban650843a2011-12-30 16:30:59 +000054 typedef byte BYTE;
55 typedef unsigned short WORD;
56 typedef unsigned int UINT;
57 typedef int INT;
58
Jacek Caban9f2b3d52011-09-03 10:43:45 +000059#ifdef BOOL
60#undef BOOL
Jacek Caban650843a2011-12-30 16:30:59 +000061 typedef long BOOL;
62 typedef long WINBOOL;
Jacek Caban9f2b3d52011-09-03 10:43:45 +000063#define BOOL WINBOOL
64#else
Jacek Caban650843a2011-12-30 16:30:59 +000065 typedef long BOOL;
Jacek Caban9f2b3d52011-09-03 10:43:45 +000066#endif
67
Jacek Caban650843a2011-12-30 16:30:59 +000068 typedef long LONG;
69 typedef UINT_PTR WPARAM;
70 typedef unsigned long DWORD;
71 typedef LONG_PTR LPARAM;
72 typedef LONG_PTR LRESULT;
Jacek Caban81c3ea72011-09-03 10:43:31 +000073
Jacek Caban650843a2011-12-30 16:30:59 +000074 typedef void *HANDLE;
75
76#define DECLARE_WIREM_HANDLE(name) \
77 typedef [wire_marshal(wire ## name)] void *name
78#define DECLARE_HANDLE(name) \
79 typedef void *name
80
81 DECLARE_HANDLE(HMODULE);
82 DECLARE_HANDLE(HINSTANCE);
83 DECLARE_HANDLE(HTASK);
84 DECLARE_HANDLE(HKEY);
85 DECLARE_HANDLE(HDESK);
86 DECLARE_HANDLE(HMF);
87 DECLARE_HANDLE(HEMF);
88 DECLARE_HANDLE(HPEN);
89 DECLARE_HANDLE(HRSRC);
90 DECLARE_HANDLE(HSTR);
91 DECLARE_HANDLE(HWINSTA);
92 DECLARE_HANDLE(HKL);
93 DECLARE_HANDLE(HGDIOBJ);
94
95 typedef HANDLE HDWP;
96 typedef INT HFILE;
97 typedef WORD *LPWORD;
98 typedef DWORD *LPDWORD;
99
100 typedef char CHAR;
101 typedef [string] CHAR *LPSTR;
102 typedef [string] const CHAR *LPCSTR;
103
104 typedef wchar_t WCHAR;
105 typedef [string] WCHAR *LPWSTR;
106 typedef [string] const WCHAR *LPCWSTR;
107
108 typedef WCHAR TCHAR;
109 typedef [string] TCHAR *LPTSTR;
110 typedef [string] const TCHAR *LPCTSTR;
111
112 typedef DWORD COLORREF;
113 typedef DWORD *LPCOLORREF;
114
115 typedef HANDLE *LPHANDLE;
116
117 typedef struct _RECTL {
118 LONG left;
119 LONG top;
120 LONG right;
121 LONG bottom;
122 } RECTL, *PRECTL, *LPRECTL;
123
124 typedef struct tagPOINT {
125 LONG x;
126 LONG y;
127 } POINT, *PPOINT, *LPPOINT;
128
129 typedef struct tagPOINTL {
130 LONG x;
131 LONG y;
132 } POINTL, *PPOINTL;
133
134 typedef struct tagSIZE {
135 LONG cx;
136 LONG cy;
137 } SIZE, *PSIZE, *LPSIZE;
138
139 typedef struct tagSIZEL {
140 LONG cx;
141 LONG cy;
142 } SIZEL, *PSIZEL, *LPSIZEL;
Jacek Caban9f2b3d52011-09-03 10:43:45 +0000143
Jacek Caban81c3ea72011-09-03 10:43:31 +0000144cpp_quote("#endif")
145
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000146cpp_quote("#ifndef _PALETTEENTRY_DEFINED")
147cpp_quote("#define _PALETTEENTRY_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000148 typedef struct tagPALETTEENTRY {
149 BYTE peRed;
150 BYTE peGreen;
151 BYTE peBlue;
152 BYTE peFlags;
153 } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000154cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000155
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000156cpp_quote("#ifndef _LOGPALETTE_DEFINED")
157cpp_quote("#define _LOGPALETTE_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000158 typedef struct tagLOGPALETTE {
159 WORD palVersion;
160 WORD palNumEntries;
161 [size_is(palNumEntries)] PALETTEENTRY palPalEntry[];
162 } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000163cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000164
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000165cpp_quote("#ifndef OLE2ANSI")
Jacek Caban650843a2011-12-30 16:30:59 +0000166 typedef WCHAR OLECHAR;
167 typedef OLECHAR *LPOLESTR;
168 typedef const OLECHAR *LPCOLESTR;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000169cpp_quote("#define OLESTR(str) L##str")
170cpp_quote("#else")
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000171cpp_quote(" typedef char OLECHAR;")
172cpp_quote(" typedef LPSTR LPOLESTR;")
173cpp_quote(" typedef LPCSTR LPCOLESTR;")
174cpp_quote("#define OLESTR(str) str")
175cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000176
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000177cpp_quote("#ifndef _WINDEF_")
Jacek Caban650843a2011-12-30 16:30:59 +0000178
179 typedef const RECTL *LPCRECTL;
180 typedef void *PVOID, *LPVOID;
181 typedef float FLOAT;
182
183 typedef struct tagRECT {
184 LONG left;
185 LONG top;
186 LONG right;
187 LONG bottom;
188 } RECT, *PRECT, *LPRECT;
189 typedef const RECT *LPCRECT;
190
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000191cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000192
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000193cpp_quote("#ifndef BASETYPES")
194cpp_quote("#define BASETYPES")
Jacek Caban650843a2011-12-30 16:30:59 +0000195
196 typedef unsigned char UCHAR;
197 typedef short SHORT;
198 typedef unsigned short USHORT;
199 typedef DWORD ULONG;
200
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000201cpp_quote(" typedef ULONG *PULONG;")
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000202cpp_quote(" typedef USHORT *PUSHORT;")
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000203cpp_quote(" typedef UCHAR *PUCHAR;")
204cpp_quote(" typedef char *PSZ;")
Jacek Caban650843a2011-12-30 16:30:59 +0000205
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000206cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000207
208 typedef double DOUBLE;
209
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000210cpp_quote("#ifndef _DWORDLONG_")
211cpp_quote("#define _DWORDLONG_")
Jacek Caban650843a2011-12-30 16:30:59 +0000212cpp_quote(" __MINGW_EXTENSION")
213 typedef unsigned __int64 DWORDLONG;
214 typedef DWORDLONG *PDWORDLONG;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000215cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000216
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000217cpp_quote("#ifndef _ULONGLONG_")
Jacek Caban650843a2011-12-30 16:30:59 +0000218cpp_quote(" __MINGW_EXTENSION")
219 typedef __int64 LONGLONG;
220 cpp_quote(" __MINGW_EXTENSION")
221 typedef unsigned __int64 ULONGLONG;
222 typedef LONGLONG *PLONGLONG;
223 typedef ULONGLONG *PULONGLONG;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000224cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000225
226cpp_quote("#if 0")
227 typedef struct _LARGE_INTEGER {
228 LONGLONG QuadPart;
229 } LARGE_INTEGER, *PLARGE_INTEGER;
230
231 typedef struct _ULARGE_INTEGER {
232 ULONGLONG QuadPart;
233 } ULARGE_INTEGER;
234cpp_quote("#endif")
235
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000236cpp_quote("#ifndef _WINBASE_")
Jacek Caban650843a2011-12-30 16:30:59 +0000237
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000238cpp_quote("#ifndef _FILETIME_")
239cpp_quote("#define _FILETIME_")
Jacek Caban650843a2011-12-30 16:30:59 +0000240 typedef struct _FILETIME {
241 DWORD dwLowDateTime;
242 DWORD dwHighDateTime;
243 } FILETIME, *PFILETIME, *LPFILETIME;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000244cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000245
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000246cpp_quote("#ifndef _SYSTEMTIME_")
247cpp_quote("#define _SYSTEMTIME_")
Jacek Caban650843a2011-12-30 16:30:59 +0000248 typedef struct _SYSTEMTIME {
249 WORD wYear;
250 WORD wMonth;
251 WORD wDayOfWeek;
252 WORD wDay;
253 WORD wHour;
254 WORD wMinute;
255 WORD wSecond;
256 WORD wMilliseconds;
257 } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000258cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000259
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000260cpp_quote("#ifndef _SECURITY_ATTRIBUTES_")
261cpp_quote("#define _SECURITY_ATTRIBUTES_")
Jacek Caban650843a2011-12-30 16:30:59 +0000262 typedef struct _SECURITY_ATTRIBUTES {
263 DWORD nLength;
264 LPVOID lpSecurityDescriptor;
265 WINBOOL bInheritHandle;
266 } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000267cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000268
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000269cpp_quote("#ifndef SECURITY_DESCRIPTOR_REVISION")
Jacek Caban650843a2011-12-30 16:30:59 +0000270 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
271 typedef PVOID PSID;
272
273 typedef struct _ACL {
274 UCHAR AclRevision;
275 UCHAR Sbz1;
276 USHORT AclSize;
277 USHORT AceCount;
278 USHORT Sbz2;
279 } ACL, *PACL;
280
281 typedef struct _SECURITY_DESCRIPTOR {
282 UCHAR Revision;
283 UCHAR Sbz1;
284 SECURITY_DESCRIPTOR_CONTROL Control;
285 PSID Owner;
286 PSID Group;
287 PACL Sacl;
288 PACL Dacl;
289 } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR;
290
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000291cpp_quote("#endif")
292cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000293
294 typedef struct _COAUTHIDENTITY {
295 [size_is(UserLength+1)] USHORT *User;
296 [range(0,256)] ULONG UserLength;
297 [size_is(DomainLength+1)] USHORT *Domain;
298 [range(0,256)] ULONG DomainLength;
299 [size_is(PasswordLength+1)] USHORT *Password;
300 [range(0,256)] ULONG PasswordLength;
301 ULONG Flags;
302 } COAUTHIDENTITY;
303
304 typedef struct _COAUTHINFO {
305 DWORD dwAuthnSvc;
306 DWORD dwAuthzSvc;
307 LPWSTR pwszServerPrincName;
308 DWORD dwAuthnLevel;
309 DWORD dwImpersonationLevel;
310 COAUTHIDENTITY *pAuthIdentityData;
311 DWORD dwCapabilities;
312 } COAUTHINFO;
313
314 typedef LONG SCODE;
315 typedef SCODE *PSCODE;
Jacek Caban81c3ea72011-09-03 10:43:31 +0000316
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000317cpp_quote("#ifndef _HRESULT_DEFINED")
318cpp_quote("#define _HRESULT_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000319 typedef LONG HRESULT;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000320cpp_quote("#endif")
Jacek Caban81c3ea72011-09-03 10:43:31 +0000321
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000322cpp_quote("#ifndef __OBJECTID_DEFINED")
323cpp_quote("#define __OBJECTID_DEFINED")
324cpp_quote("#define _OBJECTID_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000325 typedef struct _OBJECTID {
326 GUID Lineage;
327 unsigned long Uniquifier;
328 } OBJECTID;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000329cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000330
331cpp_quote("#if 0")
332 typedef GUID *REFGUID;
333 typedef IID *REFIID;
334 typedef CLSID *REFCLSID;
335 typedef FMTID *REFFMTID;
336cpp_quote("#endif")
337
338 typedef enum tagMEMCTX {
339 MEMCTX_TASK = 1,
340 MEMCTX_SHARED = 2,
341 MEMCTX_MACSYSTEM = 3,
342 MEMCTX_UNKNOWN = -1,
343 MEMCTX_SAME = -2
344 } MEMCTX;
345
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000346cpp_quote("#ifndef _ROTFLAGS_DEFINED")
347cpp_quote("#define _ROTFLAGS_DEFINED")
348cpp_quote("#define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1")
349cpp_quote("#define ROTFLAGS_ALLOWANYCLIENT 0x2")
350cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000351
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000352cpp_quote("#ifndef _ROT_COMPARE_MAX_DEFINED")
353cpp_quote("#define _ROT_COMPARE_MAX_DEFINED")
354cpp_quote("#define ROT_COMPARE_MAX 2048")
355cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000356
357 typedef enum tagCLSCTX {
358 CLSCTX_INPROC_SERVER = 0x1,
359 CLSCTX_INPROC_HANDLER = 0x2,
360 CLSCTX_LOCAL_SERVER = 0x4,
361 CLSCTX_INPROC_SERVER16 = 0x8,
362 CLSCTX_REMOTE_SERVER = 0x10,
363 CLSCTX_INPROC_HANDLER16 = 0x20,
364 CLSCTX_RESERVED1 = 0x40,
365 CLSCTX_RESERVED2 = 0x80,
366 CLSCTX_RESERVED3 = 0x100,
367 CLSCTX_RESERVED4 = 0x200,
368 CLSCTX_NO_CODE_DOWNLOAD = 0x400,
369 CLSCTX_RESERVED5 = 0x800,
370 CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
371 CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
372 CLSCTX_NO_FAILURE_LOG = 0x4000,
373 CLSCTX_DISABLE_AAA = 0x8000,
374 CLSCTX_ENABLE_AAA = 0x10000,
375 CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
376 CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000,
377 CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000
378 } CLSCTX;
379
380 typedef enum tagMSHLFLAGS {
381 MSHLFLAGS_NORMAL = 0,
382 MSHLFLAGS_TABLESTRONG = 1,
383 MSHLFLAGS_TABLEWEAK = 2,
384 MSHLFLAGS_NOPING = 4,
385 MSHLFLAGS_RESERVED1 = 8,
386 MSHLFLAGS_RESERVED2 = 16,
387 MSHLFLAGS_RESERVED3 = 32,
388 MSHLFLAGS_RESERVED4 = 64
389 } MSHLFLAGS;
390
391 typedef enum tagMSHCTX {
392 MSHCTX_LOCAL = 0,
393 MSHCTX_NOSHAREDMEM = 1,
394 MSHCTX_DIFFERENTMACHINE = 2,
395 MSHCTX_INPROC = 3,
396 MSHCTX_CROSSCTX = 4
397 } MSHCTX;
398
399 typedef enum tagDVASPECT {
400 DVASPECT_CONTENT = 1,
401 DVASPECT_THUMBNAIL = 2,
402 DVASPECT_ICON = 4,DVASPECT_DOCPRINT = 8
403 } DVASPECT;
404
405 typedef enum tagSTGC {
406 STGC_DEFAULT = 0,
407 STGC_OVERWRITE = 1,
408 STGC_ONLYIFCURRENT = 2,
409 STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
410 STGC_CONSOLIDATE = 8
411 } STGC;
412
413 typedef enum tagSTGMOVE {
414 STGMOVE_MOVE = 0,
415 STGMOVE_COPY = 1,
416 STGMOVE_SHALLOWCOPY = 2
417 } STGMOVE;
418
419 typedef enum tagSTATFLAG {
420 STATFLAG_DEFAULT = 0,
421 STATFLAG_NONAME = 1,
422 STATFLAG_NOOPEN = 2
423 } STATFLAG;
424
425 typedef [context_handle] void *HCONTEXT;
426
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000427cpp_quote("#ifndef _LCID_DEFINED")
428cpp_quote("#define _LCID_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000429 typedef DWORD LCID;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000430cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000431
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000432cpp_quote("#ifndef _LANGID_DEFINED")
433cpp_quote("#define _LANGID_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000434 typedef USHORT LANGID;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000435cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000436
437 typedef struct _BYTE_BLOB {
438 unsigned long clSize;
439 [size_is(clSize)] byte abData[];
440 } BYTE_BLOB;
441
442 typedef [unique] BYTE_BLOB *UP_BYTE_BLOB;
443
444 typedef struct _WORD_BLOB {
445 unsigned long clSize;
446 [size_is(clSize)] unsigned short asData[];
447 } WORD_BLOB;
448
449 typedef [unique] WORD_BLOB *UP_WORD_BLOB;
450
451 typedef struct _DWORD_BLOB {
452 unsigned long clSize;
453 [size_is(clSize)] unsigned long alData[];
454 } DWORD_BLOB;
455
456 typedef [unique] DWORD_BLOB *UP_DWORD_BLOB;
457
458 typedef struct _FLAGGED_BYTE_BLOB {
459 unsigned long fFlags;
460 unsigned long clSize;
461 [size_is(clSize)] byte abData[];
462 } FLAGGED_BYTE_BLOB;
463
464 typedef [unique] FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
465
466 typedef struct _FLAGGED_WORD_BLOB {
467 unsigned long fFlags;
468 unsigned long clSize;
469 [size_is(clSize)] unsigned short asData[];
470 } FLAGGED_WORD_BLOB;
471
472 typedef [unique] FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
473
474 typedef struct _BYTE_SIZEDARR {
475 unsigned long clSize;
476 [size_is(clSize)] byte *pData;
477 } BYTE_SIZEDARR;
478
479 typedef struct _SHORT_SIZEDARR {
480 unsigned long clSize;
481 [size_is(clSize)] unsigned short *pData;
482 } WORD_SIZEDARR;
483
484 typedef struct _LONG_SIZEDARR {
485 unsigned long clSize;
486 [size_is(clSize)] unsigned long *pData;
487 } DWORD_SIZEDARR;
488
489 typedef struct _HYPER_SIZEDARR {
490 unsigned long clSize;
491 [size_is(clSize)] hyper *pData;
492 } HYPER_SIZEDARR;
493
494 const long WDT_INPROC_CALL = 0x48746457;
495 const long WDT_REMOTE_CALL = 0x52746457;
496 const long WDT_INPROC64_CALL = 0x50746457;
497
498 typedef union _userCLIPFORMAT switch (long fContext) u {
499 case WDT_INPROC_CALL: DWORD dwValue;
500 case WDT_REMOTE_CALL: [string] wchar_t *pwszName;
501 } userCLIPFORMAT;
502
503 typedef [unique] userCLIPFORMAT *wireCLIPFORMAT;
504 typedef [wire_marshal(wireCLIPFORMAT)] WORD CLIPFORMAT;
505
506 typedef union _GDI_NONREMOTE switch(long fContext) u {
507 case WDT_INPROC_CALL: long hInproc;
508 case WDT_REMOTE_CALL: DWORD_BLOB *hRemote;
509 } GDI_NONREMOTE;
510
511 typedef union _userHGLOBAL switch(long fContext) {
512 case WDT_INPROC_CALL: long hInproc;
513 case WDT_REMOTE_CALL: FLAGGED_BYTE_BLOB *hRemote;
514 case WDT_INPROC64_CALL: __int64 hInproc64;
515 } userHGLOBAL;
516
517 typedef [unique] userHGLOBAL *wireHGLOBAL;
518
519 typedef union _userHMETAFILE switch(long fContext) {
520 case WDT_INPROC_CALL: long hInproc;
521 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
522 case WDT_INPROC64_CALL: __int64 hInproc64;
523 } userHMETAFILE;
524
525 typedef struct _remoteMETAFILEPICT {
526 long mm;
527 long xExt;
528 long yExt;
529 userHMETAFILE *hMF;
530 } remoteMETAFILEPICT;
531
532 typedef union _userHMETAFILEPICT switch(long fContext) {
533 case WDT_INPROC_CALL: long hInproc;
534 case WDT_REMOTE_CALL: remoteMETAFILEPICT *hRemote;
535 case WDT_INPROC64_CALL: __int64 hInproc64;
536 } userHMETAFILEPICT;
537
538 typedef union _userHENHMETAFILE switch(long fContext) {
539 case WDT_INPROC_CALL: long hInproc;
540 case WDT_REMOTE_CALL: BYTE_BLOB *hRemote;
541 case WDT_INPROC64_CALL: __int64 hInproc64;
542 } userHENHMETAFILE;
543
544 typedef struct _userBITMAP {
545 LONG bmType;
546 LONG bmWidth;
547 LONG bmHeight;
548 LONG bmWidthBytes;
549 WORD bmPlanes;
550 WORD bmBitsPixel;
551 ULONG cbSize;
552 [size_is(cbSize)] byte pBuffer[];
553 } userBITMAP;
554
555 typedef union _userHBITMAP switch(long fContext) u {
556 case WDT_INPROC_CALL: long hInproc;
557 case WDT_REMOTE_CALL: userBITMAP *hRemote;
558 case WDT_INPROC64_CALL: __int64 hInproc64;
559 } userHBITMAP;
560
561 typedef union _userHPALETTE switch(long fContext) u {
562 case WDT_INPROC_CALL: long hInproc;
563 case WDT_REMOTE_CALL: LOGPALETTE *hRemote;
564 case WDT_INPROC64_CALL: __int64 hInproc64;
565 } userHPALETTE;
566
567 typedef union _RemotableHandle switch(long fContext) {
568 case WDT_INPROC_CALL: long hInproc;
569 case WDT_REMOTE_CALL: long hRemote;
570 } RemotableHandle;
571
572 typedef [unique] RemotableHandle *wireHWND;
573 typedef [unique] RemotableHandle *wireHMENU;
574 typedef [unique] RemotableHandle *wireHACCEL;
575 typedef [unique] RemotableHandle *wireHBRUSH;
576 typedef [unique] RemotableHandle *wireHFONT;
577 typedef [unique] RemotableHandle *wireHDC;
578 typedef [unique] RemotableHandle *wireHICON;
579 typedef [unique] RemotableHandle *wireHRGN;
580
581cpp_quote("#if 0")
582#ifndef _MIDL_DECLARE_WIREM_HANDLE
583 DECLARE_WIREM_HANDLE(HWND);
584 DECLARE_WIREM_HANDLE(HMENU);
585 DECLARE_WIREM_HANDLE(HACCEL);
586 DECLARE_WIREM_HANDLE(HBRUSH);
587 DECLARE_WIREM_HANDLE(HFONT);
588 DECLARE_WIREM_HANDLE(HDC);
589 DECLARE_WIREM_HANDLE(HICON);
590 DECLARE_WIREM_HANDLE(HRGN);
591#endif
592
593 typedef HICON HCURSOR;
594
595cpp_quote("#endif")
596
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000597cpp_quote("#ifndef _TEXTMETRIC_DEFINED")
598cpp_quote("#define _TEXTMETRIC_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000599 typedef struct tagTEXTMETRICW {
600 LONG tmHeight;
601 LONG tmAscent;
602 LONG tmDescent;
603 LONG tmInternalLeading;
604 LONG tmExternalLeading;
605 LONG tmAveCharWidth;
606 LONG tmMaxCharWidth;
607 LONG tmWeight;
608 LONG tmOverhang;
609 LONG tmDigitizedAspectX;
610 LONG tmDigitizedAspectY;
611 WCHAR tmFirstChar;
612 WCHAR tmLastChar;
613 WCHAR tmDefaultChar;
614 WCHAR tmBreakChar;
615 BYTE tmItalic;
616 BYTE tmUnderlined;
617 BYTE tmStruckOut;
618 BYTE tmPitchAndFamily;
619 BYTE tmCharSet;
620 } TEXTMETRICW, *PTEXTMETRICW, *LPTEXTMETRICW;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000621cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000622
623cpp_quote("#if 0")
624 typedef struct tagMSG {
625 HWND hwnd;
626 UINT message;
627 WPARAM wParam;
628 LPARAM lParaml;
629 DWORD time;
630 POINT pt;
631 } MSG, *PMSG, *NPMSG, *LPMSG;
632cpp_quote("#endif")
633
634 typedef [unique] userHBITMAP *wireHBITMAP;
635 typedef [unique] userHPALETTE *wireHPALETTE;
636 typedef [unique] userHENHMETAFILE *wireHENHMETAFILE;
637 typedef [unique] userHMETAFILE *wireHMETAFILE;
638 typedef [unique] userHMETAFILEPICT *wireHMETAFILEPICT;
639
640cpp_quote("#if 0")
641 DECLARE_WIREM_HANDLE(HGLOBAL);
642 typedef HGLOBAL HLOCAL;
643 DECLARE_WIREM_HANDLE(HBITMAP);
644 DECLARE_WIREM_HANDLE(HPALETTE);
645 DECLARE_WIREM_HANDLE(HENHMETAFILE);
646 DECLARE_WIREM_HANDLE(HMETAFILE);
647cpp_quote("#endif")
648
649 DECLARE_WIREM_HANDLE(HMETAFILEPICT);
Jacek Caban81c3ea72011-09-03 10:43:31 +0000650
651} /* IWinTypes */
652
Jacek Caban650843a2011-12-30 16:30:59 +0000653typedef double DATE;
654
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000655cpp_quote("#ifndef _tagCY_DEFINED")
656cpp_quote("#define _tagCY_DEFINED")
657cpp_quote("#define _CY_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000658
659cpp_quote("#if 0")
660
661typedef struct tagCY {
662 LONGLONG int64;
663} CY;
664
665cpp_quote("#else")
666
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000667cpp_quote(" typedef union tagCY {")
668cpp_quote(" __C89_NAMELESS struct {")
669cpp_quote(" unsigned long Lo;")
670cpp_quote(" long Hi;")
671cpp_quote(" } DUMMYSTRUCTNAME;")
672cpp_quote(" LONGLONG int64;")
673cpp_quote(" } CY;")
Jacek Caban650843a2011-12-30 16:30:59 +0000674
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000675cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000676cpp_quote("#endif")
677
678typedef CY *LPCY;
679
680cpp_quote("#if 0")
681
682typedef struct tagDEC {
683 USHORT wReserved;
684 BYTE scale;
685 BYTE sign;
686 ULONG Hi32;
687 ULONGLONG Lo64;
688} DECIMAL;
689
690cpp_quote("#else")
691
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000692cpp_quote(" typedef struct tagDEC {")
693cpp_quote(" USHORT wReserved;")
694cpp_quote(" __C89_NAMELESS union {")
695cpp_quote(" __C89_NAMELESS struct {")
696cpp_quote(" BYTE scale;")
697cpp_quote(" BYTE sign;")
698cpp_quote(" } DUMMYSTRUCTNAME;")
699cpp_quote(" USHORT signscale;")
700cpp_quote(" } DUMMYUNIONNAME;")
701cpp_quote(" ULONG Hi32;")
702cpp_quote(" __C89_NAMELESS union {")
703cpp_quote(" __C89_NAMELESS struct {")
704cpp_quote(" ULONG Lo32;")
705cpp_quote(" ULONG Mid32;")
706cpp_quote(" } DUMMYSTRUCTNAME2;")
707cpp_quote(" ULONGLONG Lo64;")
708cpp_quote(" } DUMMYUNIONNAME2;")
709cpp_quote(" } DECIMAL;")
Jacek Caban650843a2011-12-30 16:30:59 +0000710
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000711cpp_quote("#define DECIMAL_NEG ((BYTE)0x80)")
712cpp_quote("#define DECIMAL_SETZERO(dec) {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}")
Jacek Caban650843a2011-12-30 16:30:59 +0000713
714cpp_quote("#endif")
715
716typedef DECIMAL *LPDECIMAL;
717
718typedef [unique] FLAGGED_WORD_BLOB *wireBSTR;
719typedef [wire_marshal(wireBSTR)] OLECHAR *BSTR;
720typedef BSTR *LPBSTR;
721
722typedef short VARIANT_BOOL;
723typedef VARIANT_BOOL _VARIANT_BOOL;
724
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000725cpp_quote("#ifndef _BOOLEAN_")
726cpp_quote("#define _BOOLEAN_")
Jacek Caban650843a2011-12-30 16:30:59 +0000727typedef boolean BOOLEAN;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000728cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000729
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000730cpp_quote("#ifndef _tagBSTRBLOB_DEFINED")
731cpp_quote("#define _tagBSTRBLOB_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000732typedef struct tagBSTRBLOB {
733 ULONG cbSize;
734 [size_is(cbSize)] BYTE *pData;
735} BSTRBLOB, *LPBSTRBLOB;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000736cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000737
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000738cpp_quote("#define VARIANT_TRUE ((VARIANT_BOOL)-1)")
739cpp_quote("#define VARIANT_FALSE ((VARIANT_BOOL)0)")
Jacek Caban650843a2011-12-30 16:30:59 +0000740
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000741cpp_quote("#ifndef _tagBLOB_DEFINED")
742cpp_quote("#define _tagBLOB_DEFINED")
743cpp_quote("#define _BLOB_DEFINED")
744cpp_quote("#define _LPBLOB_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000745typedef struct tagBLOB {
746 ULONG cbSize;
747 [size_is(cbSize)] BYTE *pBlobData;
748} BLOB, *LPBLOB;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000749cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000750
751typedef struct tagCLIPDATA {
752 ULONG cbSize;
753 long ulClipFmt;
754 [size_is(cbSize-4)] BYTE *pClipData;
755} CLIPDATA;
756
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000757cpp_quote("#define CBPCLIPDATA(clipdata) ((clipdata).cbSize - sizeof((clipdata).ulClipFmt))")
Jacek Caban650843a2011-12-30 16:30:59 +0000758
759typedef unsigned short VARTYPE;
760
761#include <psdk_inc/_varenum.h>
762
763typedef ULONG PROPID;
764
765cpp_quote("#ifndef PROPERTYKEY_DEFINED")
766cpp_quote("#define PROPERTYKEY_DEFINED")
767typedef struct _tagpropertykey {
768 GUID fmtid;
769 DWORD pid;
770} PROPERTYKEY;
771cpp_quote("#endif")
772
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000773cpp_quote("#ifndef SID_IDENTIFIER_AUTHORITY_DEFINED")
774cpp_quote("#define SID_IDENTIFIER_AUTHORITY_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000775typedef struct _SID_IDENTIFIER_AUTHORITY {
776 UCHAR Value[6];
777} SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000778cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000779
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000780cpp_quote("#ifndef SID_DEFINED")
781cpp_quote("#define SID_DEFINED")
Jacek Caban650843a2011-12-30 16:30:59 +0000782typedef struct _SID {
783 BYTE Revision;
784 BYTE SubAuthorityCount;
785 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
786 [size_is(SubAuthorityCount)] ULONG SubAuthority[*];
787} SID, *PISID;
788
789typedef struct _SID_AND_ATTRIBUTES {
790 SID *Sid;
791 DWORD Attributes;
792} SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES;
Jacek Cabanfa634ec2011-09-03 10:31:21 +0000793cpp_quote("#endif")
Jacek Caban650843a2011-12-30 16:30:59 +0000794
795typedef struct tagCSPLATFORM {
796 DWORD dwPlatformId;
797 DWORD dwVersionHi;
798 DWORD dwVersionLo;
799 DWORD dwProcessorArch;
800} CSPLATFORM;
801
802typedef struct tagQUERYCONTEXT {
803 DWORD dwContext;
804 CSPLATFORM Platform;
805 LCID Locale;
806 DWORD dwVersionHi;
807 DWORD dwVersionLo;
808} QUERYCONTEXT;
809
810typedef [v1_enum] enum tagTYSPEC {
811 TYSPEC_CLSID = 0,
812 TYSPEC_FILEEXT,
813 TYSPEC_MIMETYPE,
814 TYSPEC_FILENAME,
815 TYSPEC_PROGID,
816 TYSPEC_PACKAGENAME,
817 TYSPEC_OBJECTID
818} TYSPEC;
819
820typedef union switch(DWORD tyspec) {
821 case TYSPEC_CLSID:
822 CLSID clsid;
823 case TYSPEC_FILEEXT:
824 LPOLESTR pFileExt;
825 case TYSPEC_MIMETYPE:
826 LPOLESTR pMimeType;
827 case TYSPEC_PROGID:
828 LPOLESTR pProgId;
829 case TYSPEC_FILENAME:
830 LPOLESTR pFileName;
831 case TYSPEC_PACKAGENAME:
832 struct {
833 LPOLESTR pPackageName;
834 GUID PolicyId;
835 } ByName;
836 case TYSPEC_OBJECTID:
837 struct {
838 GUID ObjectId;
839 GUID PolicyId;
840 } ByObjectId;
841} uCLSSPEC;