Added support for CP_UNIXCP.
[wine] / include / wtypes.h
1 /*** Autogenerated by WIDL 0.1 from wtypes.idl - Do not edit ***/
2 #include "rpc.h"
3 #include "rpcndr.h"
4
5 #ifndef __WIDL_WTYPES_H
6 #define __WIDL_WTYPES_H
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #include "basetsd.h"
11 #include "guiddef.h"
12 #if 0 /* winnt.h */
13 typedef unsigned char BYTE;
14
15 typedef unsigned short WORD;
16
17 typedef unsigned long DWORD;
18
19 typedef long BOOL;
20
21 typedef unsigned char UCHAR;
22
23 typedef int INT;
24
25 typedef unsigned int UINT;
26
27 typedef short SHORT;
28
29 typedef unsigned short USHORT;
30
31 typedef long LONG;
32
33 typedef unsigned long ULONG;
34
35 typedef float FLOAT;
36
37 typedef double DOUBLE;
38
39 typedef void *PVOID, *LPVOID;
40
41 typedef char CHAR;
42
43 typedef CHAR *LPSTR;
44
45 typedef const CHAR *LPCSTR;
46
47 typedef wchar_t WCHAR;
48
49 typedef WCHAR *LPWSTR;
50
51 typedef const WCHAR *LPCWSTR;
52
53 typedef boolean BOOLEAN;
54
55 typedef DWORD COLORREF;
56
57 typedef void *HANDLE;
58
59 typedef void *HACCEL;
60
61 typedef void *HDC;
62
63 typedef void *HFONT;
64
65 typedef void *HWND;
66
67 typedef void *HMENU;
68
69 typedef void *HMODULE;
70
71 typedef void *HINSTANCE;
72
73 typedef void *HRGN;
74
75 typedef void *HTASK;
76
77 typedef void *HKEY;
78
79 typedef LONG_PTR LRESULT;
80
81 typedef double DATE;
82
83 typedef LONG HRESULT;
84
85 typedef DWORD LCID;
86
87 typedef unsigned __int64 DWORDLONG;
88
89 typedef __int64 LONGLONG;
90
91 typedef unsigned __int64 ULONGLONG;
92
93 typedef struct _LARGE_INTEGER {
94     LONGLONG QuadPart;
95 } LARGE_INTEGER;
96
97 typedef struct _ULARGE_INTEGER {
98     ULONGLONG QuadPart;
99 } ULARGE_INTEGER;
100
101 typedef struct _SID_IDENTIFIER_AUTHORITY {
102     UCHAR Value[6];
103 } SID_IDENTIFIER_AUTHORITY, *PSID_IDENTIFIER_AUTHORITY;
104
105 typedef struct _SID {
106     UCHAR Revision;
107     UCHAR SubAuthorityCount;
108     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
109     ULONG SubAuthority[1];
110 } SID, *PSID;
111
112 typedef USHORT SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
113
114 typedef struct _ACL {
115     UCHAR AclRevision;
116     UCHAR Sbz1;
117     USHORT AclSize;
118     USHORT AceCount;
119     USHORT Sbz2;
120 } ACL;
121
122 typedef ACL *PACL;
123
124 typedef struct _SECURITY_DESCRIPTOR {
125     UCHAR Revision;
126     UCHAR Sbz1;
127     SECURITY_DESCRIPTOR_CONTROL Control;
128     PSID Owner;
129     PSID Group;
130     PACL Sacl;
131     PACL Dacl;
132 } SECURITY_DESCRIPTOR, *PSECURITY_DESCRIPTOR;
133
134 typedef struct tagSIZE {
135     LONG cx;
136     LONG cy;
137 } SIZE, *PSIZE, *LPSIZE;
138
139 typedef SIZE SIZEL, *PSIZEL, *LPSIZEL;
140
141 typedef struct tagPOINT {
142     LONG x;
143     LONG y;
144 } POINT, *PPOINT, *LPPOINT;
145
146 typedef struct _POINTL {
147     LONG x;
148     LONG y;
149 } POINTL;
150
151 typedef struct tagRECT {
152     LONG left;
153     LONG top;
154     LONG right;
155     LONG bottom;
156 } RECT, *PRECT, *LPRECT;
157
158 typedef const RECT *LPCRECT;
159
160 typedef struct _RECTL {
161     LONG left;
162     LONG top;
163     LONG right;
164     LONG bottom;
165 } RECTL, *PRECTL, *LPRECTL;
166
167 typedef const RECTL *LPCRECTL;
168
169 typedef UINT_PTR WPARAM;
170
171 typedef LONG_PTR LPARAM;
172
173 typedef struct tagMSG {
174     HWND hwnd;
175     UINT message;
176     WPARAM wParam;
177     LPARAM lParam;
178     DWORD time;
179     POINT pt;
180 } MSG, *PMSG, *NPMSG, *LPMSG;
181
182 #endif /* winnt.h */
183 #ifndef _PALETTEENTRY_DEFINED
184 #define _PALETTEENTRY_DEFINED
185 typedef struct tagPALETTEENTRY {
186     BYTE peRed;
187     BYTE peGreen;
188     BYTE peBlue;
189     BYTE peFlags;
190 } PALETTEENTRY, *PPALETTEENTRY, *LPPALETTEENTRY;
191
192 #endif
193 #ifndef _LOGPALETTE_DEFINED
194 #define _LOGPALETTE_DEFINED
195 typedef struct tagLOGPALETTE {
196     WORD palVersion;
197     WORD palNumEntries;
198     PALETTEENTRY palPalEntry[1];
199 } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
200
201 #endif
202 #ifndef _FILETIME_
203 #define _FILETIME_
204 typedef struct _FILETIME {
205     DWORD dwLowDateTime;
206     DWORD dwHighDateTime;
207 } FILETIME, *PFILETIME, *LPFILETIME;
208
209 #endif
210 #ifndef _TEXTMETRIC_DEFINED
211 #define _TEXTMETRIC_DEFINED
212 typedef struct {
213     LONG tmHeight;
214     LONG tmAscent;
215     LONG tmDescent;
216     LONG tmInternalLeading;
217     LONG tmExternalLeading;
218     LONG tmAveCharWidth;
219     LONG tmMaxCharWidth;
220     LONG tmWeight;
221     LONG tmOverhang;
222     LONG tmDigitizedAspectX;
223     LONG tmDigitizedAspectY;
224     BYTE tmFirstChar;
225     BYTE tmLastChar;
226     BYTE tmDefaultChar;
227     BYTE tmBreakChar;
228     BYTE tmItalic;
229     BYTE tmUnderlined;
230     BYTE tmStruckOut;
231     BYTE tmPitchAndFamily;
232     BYTE tmCharSet;
233 } TEXTMETRICA, *LPTEXTMETRICA, *PTEXTMETRICA;
234
235 typedef struct {
236     LONG tmHeight;
237     LONG tmAscent;
238     LONG tmDescent;
239     LONG tmInternalLeading;
240     LONG tmExternalLeading;
241     LONG tmAveCharWidth;
242     LONG tmMaxCharWidth;
243     LONG tmWeight;
244     LONG tmOverhang;
245     LONG tmDigitizedAspectX;
246     LONG tmDigitizedAspectY;
247     WCHAR tmFirstChar;
248     WCHAR tmLastChar;
249     WCHAR tmDefaultChar;
250     WCHAR tmBreakChar;
251     BYTE tmItalic;
252     BYTE tmUnderlined;
253     BYTE tmStruckOut;
254     BYTE tmPitchAndFamily;
255     BYTE tmCharSet;
256 } TEXTMETRICW, *LPTEXTMETRICW, *PTEXTMETRICW;
257
258 #endif
259 typedef WCHAR OLECHAR;
260
261 typedef OLECHAR *LPOLESTR;
262
263 typedef const OLECHAR *LPCOLESTR;
264
265 #ifndef __WINESRC__
266 #define OLESTR(str) WINE_UNICODE_TEXT(str)
267 #endif
268 typedef CHAR OLECHAR16;
269
270 typedef LPSTR LPOLESTR16;
271
272 typedef LPCSTR LPCOLESTR16;
273
274 typedef OLECHAR16 *BSTR16;
275 typedef BSTR16 *LPBSTR16;
276 #define OLESTR16(x) x
277 typedef LONG SCODE;
278
279 typedef struct _COAUTHIDENTITY {
280     USHORT *User;
281     ULONG UserLength;
282     USHORT *Domain;
283     ULONG DomainLength;
284     USHORT *Password;
285     ULONG PasswordLength;
286     ULONG Flags;
287 } COAUTHIDENTITY;
288
289 typedef struct _COAUTHINFO {
290     DWORD dwAuthnSvc;
291     DWORD dwAuthzSvc;
292     LPWSTR pwszServerPrincName;
293     DWORD dwAuthnLevel;
294     DWORD dwImpersonationLevel;
295     COAUTHIDENTITY *pAuthIdentityData;
296     DWORD dwCapabilities;
297 } COAUTHINFO;
298
299 typedef struct _COSERVERINFO {
300     DWORD dwReserved1;
301     LPWSTR pwszName;
302     COAUTHINFO *pAuthInfo;
303     DWORD dwReserved2;
304 } COSERVERINFO;
305
306 typedef enum tagMEMCTX {
307     MEMCTX_TASK = 1,
308     MEMCTX_SHARED = 2,
309     MEMCTX_MACSYSTEM = 3,
310     MEMCTX_UNKNOWN = -1,
311     MEMCTX_SAME = -2
312 } MEMCTX;
313
314 #ifndef _ROTFLAGS_DEFINED
315 #define _ROTFLAGS_DEFINED
316 #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
317 #define ROTFLAGS_ALLOWANYCLIENT 0x2
318 #endif
319 typedef enum tagCLSCTX {
320     CLSCTX_INPROC_SERVER = 0x1,
321     CLSCTX_INPROC_HANDLER = 0x2,
322     CLSCTX_LOCAL_SERVER = 0x4,
323     CLSCTX_INPROC_SERVER16 = 0x8,
324     CLSCTX_REMOTE_SERVER = 0x10,
325     CLSCTX_INPROC_HANDLER16 = 0x20,
326     CLSCTX_INPROC_SERVERX86 = 0x40,
327     CLSCTX_INPROC_HANDLERX86 = 0x80,
328     CLSCTX_ESERVER_HANDLER = 0x100,
329     CLSCTX_NO_CODE_DOWNLOAD = 0x400,
330     CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
331     CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
332     CLSCTX_NO_FAILURE_LOG = 0x4000,
333     CLSCTX_DISABLE_AAA = 0x8000,
334     CLSCTX_ENABLE_AAA = 0x10000,
335     CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000
336 } CLSCTX;
337
338 #define CLSCTX_INPROC (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER)
339 #define CLSCTX_ALL (CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
340 #define CLSCTX_SERVER (CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER | CLSCTX_REMOTE_SERVER)
341 typedef enum tagMSHLFLAGS {
342     MSHLFLAGS_NORMAL = 0,
343     MSHLFLAGS_TABLESTRONG = 1,
344     MSHLFLAGS_TABLEWEAK = 2,
345     MSHLFLAGS_NOPING = 4
346 } MSHLFLAGS;
347
348 typedef enum tagMSHCTX {
349     MSHCTX_LOCAL = 0,
350     MSHCTX_NOSHAREDMEM = 1,
351     MSHCTX_DIFFERENTMACHINE = 2,
352     MSHCTX_INPROC = 3,
353     MSHCTX_CROSSCTX = 4
354 } MSHCTX;
355
356 typedef struct _BYTE_BLOB {
357     unsigned long clSize;
358     byte abData[1];
359 } BYTE_BLOB;
360
361 typedef BYTE_BLOB *UP_BYTE_BLOB;
362
363 typedef struct _FLAGGED_BYTE_BLOB {
364     unsigned long fFlags;
365     unsigned long clSize;
366     byte abData[1];
367 } FLAGGED_BYTE_BLOB;
368
369 typedef FLAGGED_BYTE_BLOB *UP_FLAGGED_BYTE_BLOB;
370
371 typedef struct _FLAGGED_WORD_BLOB {
372     unsigned long fFlags;
373     unsigned long clSize;
374     unsigned short asData[1];
375 } FLAGGED_WORD_BLOB;
376
377 typedef FLAGGED_WORD_BLOB *UP_FLAGGED_WORD_BLOB;
378
379 typedef struct _BYTE_SIZEDARR {
380     unsigned long clSize;
381     byte *pData;
382 } BYTE_SIZEDARR;
383
384 typedef struct _SHORT_SIZEDARR {
385     unsigned long clSize;
386     unsigned short *pData;
387 } WORD_SIZEDARR;
388
389 typedef struct _LONG_SIZEDARR {
390     unsigned long clSize;
391     unsigned long *pData;
392 } DWORD_SIZEDARR;
393
394 typedef struct _HYPER_SIZEDARR {
395     unsigned long clSize;
396     hyper *pData;
397 } HYPER_SIZEDARR;
398
399 #define WDT_INPROC_CALL (0x48746457)
400
401 #define WDT_REMOTE_CALL (0x52746457)
402
403 typedef struct _userCLIPFORMAT {
404     long fContext;
405     union {
406         DWORD dwValue;
407         LPWSTR pwszName;
408     } u;
409 } userCLIPFORMAT;
410
411 typedef userCLIPFORMAT *wireCLIPFORMAT;
412
413 typedef WORD CLIPFORMAT;
414 unsigned long   __RPC_USER CLIPFORMAT_UserSize     (unsigned long *, unsigned long,   CLIPFORMAT *);
415 unsigned char * __RPC_USER CLIPFORMAT_UserMarshal  (unsigned long *, unsigned char *, CLIPFORMAT *);
416 unsigned char * __RPC_USER CLIPFORMAT_UserUnmarshal(unsigned long *, unsigned char *, CLIPFORMAT *);
417 void            __RPC_USER CLIPFORMAT_UserFree     (unsigned long *, CLIPFORMAT *);
418
419 typedef struct tagRemHGLOBAL {
420     long fNullHGlobal;
421     unsigned long cbData;
422     byte data[1];
423 } RemHGLOBAL;
424
425 typedef struct _userHGLOBAL {
426     long fContext;
427     union {
428         long hInproc;
429         FLAGGED_BYTE_BLOB *hRemote;
430         long hGlobal;
431     } u;
432 } userHGLOBAL;
433
434 typedef userHGLOBAL *wireHGLOBAL;
435
436 typedef struct tagRemHMETAFILEPICT {
437     long mm;
438     long xExt;
439     long yExt;
440     unsigned long cbData;
441     byte data[1];
442 } RemHMETAFILEPICT;
443
444 typedef struct _userHMETAFILE {
445     long fContext;
446     union {
447         long hInproc;
448         BYTE_BLOB *hRemote;
449         long hGlobal;
450     } u;
451 } userHMETAFILE;
452
453 typedef userHMETAFILE *wireHMETAFILE;
454
455 typedef struct _remoteMETAFILEPICT {
456     long mm;
457     long xExt;
458     long yExt;
459     userHMETAFILE *hMF;
460 } remoteMETAFILEPICT;
461
462 typedef struct _userHMETAFILEPICT {
463     long fContext;
464     union {
465         long hInproc;
466         remoteMETAFILEPICT *hRemote;
467         long hGlobal;
468     } u;
469 } userHMETAFILEPICT;
470
471 typedef userHMETAFILEPICT *wireHMETAFILEPICT;
472
473 typedef struct tagRemHENHMETAFILE {
474     unsigned long cbData;
475     byte data[1];
476 } RemHENHMETAFILE;
477
478 typedef struct _userHENHMETAFILE {
479     long fContext;
480     union {
481         long hInproc;
482         BYTE_BLOB *hRemote;
483         long hGlobal;
484     } u;
485 } userHENHMETAFILE;
486
487 typedef userHENHMETAFILE *wireHENHMETAFILE;
488
489 typedef struct tagRemHBITMAP {
490     unsigned long cbData;
491     byte data[1];
492 } RemHBITMAP;
493
494 typedef struct _userBITMAP {
495     LONG bmType;
496     LONG bmWidth;
497     LONG bmHeight;
498     LONG bmWidthBytes;
499     WORD bmPlanes;
500     WORD bmBitsPixel;
501     ULONG cbSize;
502     byte pBuffer[1];
503 } userBITMAP;
504
505 typedef struct _userHBITMAP {
506     long fContext;
507     union {
508         long hInproc;
509         userBITMAP *hRemote;
510         long hGlobal;
511     } u;
512 } userHBITMAP;
513
514 typedef userHBITMAP *wireHBITMAP;
515
516 typedef struct tagRemHPALETTE {
517     unsigned long cbData;
518     byte data[1];
519 } RemHPALETTE;
520
521 typedef struct tagrpcLOGPALETTE {
522     WORD palVersion;
523     WORD palNumEntries;
524     PALETTEENTRY palPalEntry[1];
525 } rpcLOGPALETTE;
526
527 typedef struct _userHPALETTE {
528     long fContext;
529     union {
530         long hInproc;
531         rpcLOGPALETTE *hRemote;
532         long hGlobal;
533     } u;
534 } userHPALETTE;
535
536 typedef userHPALETTE *wireHPALETTE;
537
538 #if 0
539 typedef void *HGLOBAL;
540 unsigned long   __RPC_USER HGLOBAL_UserSize     (unsigned long *, unsigned long,   HGLOBAL *);
541 unsigned char * __RPC_USER HGLOBAL_UserMarshal  (unsigned long *, unsigned char *, HGLOBAL *);
542 unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(unsigned long *, unsigned char *, HGLOBAL *);
543 void            __RPC_USER HGLOBAL_UserFree     (unsigned long *, HGLOBAL *);
544
545 typedef HGLOBAL HLOCAL;
546
547 typedef void *HBITMAP;
548 unsigned long   __RPC_USER HBITMAP_UserSize     (unsigned long *, unsigned long,   HBITMAP *);
549 unsigned char * __RPC_USER HBITMAP_UserMarshal  (unsigned long *, unsigned char *, HBITMAP *);
550 unsigned char * __RPC_USER HBITMAP_UserUnmarshal(unsigned long *, unsigned char *, HBITMAP *);
551 void            __RPC_USER HBITMAP_UserFree     (unsigned long *, HBITMAP *);
552
553 typedef void *HPALETTE;
554 unsigned long   __RPC_USER HPALETTE_UserSize     (unsigned long *, unsigned long,   HPALETTE *);
555 unsigned char * __RPC_USER HPALETTE_UserMarshal  (unsigned long *, unsigned char *, HPALETTE *);
556 unsigned char * __RPC_USER HPALETTE_UserUnmarshal(unsigned long *, unsigned char *, HPALETTE *);
557 void            __RPC_USER HPALETTE_UserFree     (unsigned long *, HPALETTE *);
558
559 typedef void *HENHMETAFILE;
560 unsigned long   __RPC_USER HENHMETAFILE_UserSize     (unsigned long *, unsigned long,   HENHMETAFILE *);
561 unsigned char * __RPC_USER HENHMETAFILE_UserMarshal  (unsigned long *, unsigned char *, HENHMETAFILE *);
562 unsigned char * __RPC_USER HENHMETAFILE_UserUnmarshal(unsigned long *, unsigned char *, HENHMETAFILE *);
563 void            __RPC_USER HENHMETAFILE_UserFree     (unsigned long *, HENHMETAFILE *);
564
565 typedef void *HMETAFILE;
566 unsigned long   __RPC_USER HMETAFILE_UserSize     (unsigned long *, unsigned long,   HMETAFILE *);
567 unsigned char * __RPC_USER HMETAFILE_UserMarshal  (unsigned long *, unsigned char *, HMETAFILE *);
568 unsigned char * __RPC_USER HMETAFILE_UserUnmarshal(unsigned long *, unsigned char *, HMETAFILE *);
569 void            __RPC_USER HMETAFILE_UserFree     (unsigned long *, HMETAFILE *);
570
571 #endif
572 typedef void *HMETAFILEPICT;
573 unsigned long   __RPC_USER HMETAFILEPICT_UserSize     (unsigned long *, unsigned long,   HMETAFILEPICT *);
574 unsigned char * __RPC_USER HMETAFILEPICT_UserMarshal  (unsigned long *, unsigned char *, HMETAFILEPICT *);
575 unsigned char * __RPC_USER HMETAFILEPICT_UserUnmarshal(unsigned long *, unsigned char *, HMETAFILEPICT *);
576 void            __RPC_USER HMETAFILEPICT_UserFree     (unsigned long *, HMETAFILEPICT *);
577
578 #if 0
579 typedef GUID *REFGUID;
580
581 typedef IID *REFIID;
582
583 typedef CLSID *REFCLSID;
584
585 typedef FMTID *REFFMTID;
586
587 #endif
588 typedef enum tagDVASPECT {
589     DVASPECT_CONTENT = 1,
590     DVASPECT_THUMBNAIL = 2,
591     DVASPECT_ICON = 4,
592     DVASPECT_DOCPRINT = 8
593 } DVASPECT;
594
595 typedef enum tagSTGC {
596     STGC_DEFAULT = 0,
597     STGC_OVERWRITE = 1,
598     STGC_ONLYIFCURRENT = 2,
599     STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
600     STGC_CONSOLIDATE = 8
601 } STGC;
602
603 typedef enum tagSTGMOVE {
604     STGMOVE_MOVE = 0,
605     STGMOVE_COPY = 1,
606     STGMOVE_SHALLOWCOPY = 2
607 } STGMOVE;
608
609 typedef enum tagSTATFLAG {
610     STATFLAG_DEFAULT = 0,
611     STATFLAG_NONAME = 1,
612     STATFLAG_NOOPEN = 2
613 } STATFLAG;
614
615 #if 0
616 typedef struct tagCY {
617     LONGLONG int64;
618 } CY;
619
620 #else
621 typedef union tagCY {
622     struct {
623 #ifdef WORDS_BIGENDIAN
624         LONG  Hi;
625         ULONG Lo;
626 #else
627         ULONG Lo;
628         LONG  Hi;
629 #endif
630     } DUMMYSTRUCTNAME;
631     LONGLONG int64;
632 } CY;
633 #endif
634 typedef CY *LPCY;
635
636 #if 0
637 typedef struct tagDEC {
638     USHORT wReserved;
639     BYTE scale;
640     BYTE sign;
641     ULONG Hi32;
642     ULONGLONG Lo64;
643 } DECIMAL;
644
645 #else
646 typedef struct tagDEC {
647   USHORT wReserved;
648   union {
649     struct {
650       BYTE scale;
651       BYTE sign;
652     } DUMMYSTRUCTNAME;
653     USHORT signscale;
654   } DUMMYUNIONNAME;
655   ULONG Hi32;
656   union {
657     struct {
658 #ifdef WORDS_BIGENDIAN
659       ULONG Mid32;
660       ULONG Lo32;
661 #else
662       ULONG Lo32;
663       ULONG Mid32;
664 #endif
665     } DUMMYSTRUCTNAME1;
666     ULONGLONG Lo64;
667   } DUMMYUNIONNAME1;
668 } DECIMAL;
669 #endif
670 #define DECIMAL_NEG ((BYTE)0x80)
671 #define DECIMAL_SETZERO(d) do{ memset(((char*)(d)) + sizeof(USHORT), 0, sizeof(ULONG) * 3u + sizeof(USHORT)); }while (0)
672 typedef DECIMAL *LPDECIMAL;
673
674 typedef FLAGGED_WORD_BLOB *wireBSTR;
675
676 typedef OLECHAR *BSTR;
677 unsigned long   __RPC_USER BSTR_UserSize     (unsigned long *, unsigned long,   BSTR *);
678 unsigned char * __RPC_USER BSTR_UserMarshal  (unsigned long *, unsigned char *, BSTR *);
679 unsigned char * __RPC_USER BSTR_UserUnmarshal(unsigned long *, unsigned char *, BSTR *);
680 void            __RPC_USER BSTR_UserFree     (unsigned long *, BSTR *);
681
682 typedef BSTR *LPBSTR;
683
684 typedef short VARIANT_BOOL;
685
686 typedef VARIANT_BOOL _VARIANT_BOOL;
687
688 #define VARIANT_TRUE  ((VARIANT_BOOL)0xFFFF)
689 #define VARIANT_FALSE ((VARIANT_BOOL)0x0000)
690 typedef struct tagBSTRBLOB {
691     ULONG cbSize;
692     BYTE *pData;
693 } BSTRBLOB, *LPBSTRBLOB;
694
695 typedef struct tagBLOB {
696     ULONG cbSize;
697     BYTE *pBlobData;
698 } BLOB, *LPBLOB;
699
700 typedef struct tagCLIPDATA {
701     ULONG cbSize;
702     long ulClipFmt;
703     BYTE *pClipData;
704 } CLIPDATA;
705
706 #define CBPCLIPDATA(cb) ((cb).cbSize - sizeof((cb).ulClipFmt))
707 typedef ULONG PROPID;
708
709 typedef unsigned short VARTYPE;
710
711 enum VARENUM {
712     VT_EMPTY = 0,
713     VT_NULL = 1,
714     VT_I2 = 2,
715     VT_I4 = 3,
716     VT_R4 = 4,
717     VT_R8 = 5,
718     VT_CY = 6,
719     VT_DATE = 7,
720     VT_BSTR = 8,
721     VT_DISPATCH = 9,
722     VT_ERROR = 10,
723     VT_BOOL = 11,
724     VT_VARIANT = 12,
725     VT_UNKNOWN = 13,
726     VT_DECIMAL = 14,
727     VT_I1 = 16,
728     VT_UI1 = 17,
729     VT_UI2 = 18,
730     VT_UI4 = 19,
731     VT_I8 = 20,
732     VT_UI8 = 21,
733     VT_INT = 22,
734     VT_UINT = 23,
735     VT_VOID = 24,
736     VT_HRESULT = 25,
737     VT_PTR = 26,
738     VT_SAFEARRAY = 27,
739     VT_CARRAY = 28,
740     VT_USERDEFINED = 29,
741     VT_LPSTR = 30,
742     VT_LPWSTR = 31,
743     VT_RECORD = 36,
744     VT_INT_PTR = 37,
745     VT_UINT_PTR = 38,
746     VT_FILETIME = 64,
747     VT_BLOB = 65,
748     VT_STREAM = 66,
749     VT_STORAGE = 67,
750     VT_STREAMED_OBJECT = 68,
751     VT_STORED_OBJECT = 69,
752     VT_BLOB_OBJECT = 70,
753     VT_CF = 71,
754     VT_CLSID = 72,
755     VT_BSTR_BLOB = 0xfff,
756     VT_VECTOR = 0x1000,
757     VT_ARRAY = 0x2000,
758     VT_BYREF = 0x4000,
759     VT_RESERVED = 0x8000,
760     VT_ILLEGAL = 0xffff,
761     VT_ILLEGALMASKED = 0xfff,
762     VT_TYPEMASK = 0xfff
763 };
764
765 #ifdef __cplusplus
766 }
767 #endif
768 #endif /* __WIDL_WTYPES_H */