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