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