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