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