home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / wtypes.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  34KB  |  1,426 lines

  1. /* this ALWAYS GENERATED file contains the definitions for the interfaces */
  2.  
  3.  
  4. /* File created by MIDL compiler version 3.03.0110 */
  5. /* at Thu Sep 11 10:57:03 1997
  6.  */
  7. /* Compiler settings for wtypes.idl:
  8.     Oicf (OptLev=i2), W1, Zp8, env=Win32, ms_ext, c_ext
  9.     error checks: none
  10. */
  11. //@@MIDL_FILE_HEADING(  )
  12.  
  13.  
  14. /* verify that the <rpcndr.h> version is high enough to compile this file*/
  15. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  16. #define __REQUIRED_RPCNDR_H_VERSION__ 440
  17. #endif
  18.  
  19. #include "rpc.h"
  20. #include "rpcndr.h"
  21.  
  22. #ifndef __wtypes_h__
  23. #define __wtypes_h__
  24.  
  25. #ifdef __cplusplus
  26. extern "C"{
  27. #endif 
  28.  
  29. /* Forward Declarations */ 
  30.  
  31. void __RPC_FAR * __RPC_USER MIDL_user_allocate(size_t);
  32. void __RPC_USER MIDL_user_free( void __RPC_FAR * ); 
  33.  
  34. /****************************************
  35.  * Generated header for interface: __MIDL_itf_wtypes_0000
  36.  * at Thu Sep 11 10:57:03 1997
  37.  * using MIDL 3.03.0110
  38.  ****************************************/
  39. /* [local] */ 
  40.  
  41.  
  42. //+-------------------------------------------------------------------------
  43. //
  44. //  Microsoft Windows
  45. //  Copyright 1992 - 1998 Microsoft Corporation.
  46. //
  47. //--------------------------------------------------------------------------
  48.  
  49.  
  50. extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_v0_0_c_ifspec;
  51. extern RPC_IF_HANDLE __MIDL_itf_wtypes_0000_v0_0_s_ifspec;
  52.  
  53. #ifndef __IWinTypes_INTERFACE_DEFINED__
  54. #define __IWinTypes_INTERFACE_DEFINED__
  55.  
  56. /****************************************
  57.  * Generated header for interface: IWinTypes
  58.  * at Thu Sep 11 10:57:03 1997
  59.  * using MIDL 3.03.0110
  60.  ****************************************/
  61. /* [auto_handle][unique][version][uuid] */ 
  62.  
  63.  
  64. typedef struct  tagRemHGLOBAL
  65.     {
  66.     long fNullHGlobal;
  67.     unsigned long cbData;
  68.     /* [size_is] */ byte data[ 1 ];
  69.     }    RemHGLOBAL;
  70.  
  71. typedef struct  tagRemHMETAFILEPICT
  72.     {
  73.     long mm;
  74.     long xExt;
  75.     long yExt;
  76.     unsigned long cbData;
  77.     /* [size_is] */ byte data[ 1 ];
  78.     }    RemHMETAFILEPICT;
  79.  
  80. typedef struct  tagRemHENHMETAFILE
  81.     {
  82.     unsigned long cbData;
  83.     /* [size_is] */ byte data[ 1 ];
  84.     }    RemHENHMETAFILE;
  85.  
  86. typedef struct  tagRemHBITMAP
  87.     {
  88.     unsigned long cbData;
  89.     /* [size_is] */ byte data[ 1 ];
  90.     }    RemHBITMAP;
  91.  
  92. typedef struct  tagRemHPALETTE
  93.     {
  94.     unsigned long cbData;
  95.     /* [size_is] */ byte data[ 1 ];
  96.     }    RemHPALETTE;
  97.  
  98. typedef struct  tagRemBRUSH
  99.     {
  100.     unsigned long cbData;
  101.     /* [size_is] */ byte data[ 1 ];
  102.     }    RemHBRUSH;
  103.  
  104. #if !defined(_WIN32) && !defined(_MPPC_)
  105. // The following code is for Win16 only
  106. #ifndef WINAPI          // If not included with 3.1 headers...
  107. #define FAR             _far
  108. #define PASCAL          _pascal
  109. #define CDECL           _cdecl
  110. #define VOID            void
  111. #define WINAPI      FAR PASCAL
  112. #define CALLBACK    FAR PASCAL
  113. #ifndef FALSE
  114. #define FALSE 0
  115. #define TRUE 1
  116. #endif // !FALSE
  117. #ifndef _BYTE_DEFINED
  118. #define _BYTE_DEFINED
  119. typedef unsigned char BYTE;
  120.  
  121. #endif // !_BYTE_DEFINED
  122. #ifndef _WORD_DEFINED
  123. #define _WORD_DEFINED
  124. typedef unsigned short WORD;
  125.  
  126. #endif // !_WORD_DEFINED
  127. typedef unsigned int UINT;
  128.  
  129. typedef int INT;
  130.  
  131. typedef long BOOL;
  132.  
  133. #ifndef _LONG_DEFINED
  134. #define _LONG_DEFINED
  135. typedef long LONG;
  136.  
  137. #endif // !_LONG_DEFINED
  138. #ifndef _WPARAM_DEFINED
  139. #define _WPARAM_DEFINED
  140. typedef UINT WPARAM;
  141.  
  142. #endif // _WPARAM_DEFINED
  143. #ifndef _DWORD_DEFINED
  144. #define _DWORD_DEFINED
  145. typedef unsigned long DWORD;
  146.  
  147. #endif // !_DWORD_DEFINED
  148. #ifndef _LPARAM_DEFINED
  149. #define _LPARAM_DEFINED
  150. typedef LONG LPARAM;
  151.  
  152. #endif // !_LPARAM_DEFINED
  153. #ifndef _LRESULT_DEFINED
  154. #define _LRESULT_DEFINED
  155. typedef LONG LRESULT;
  156.  
  157. #endif // !_LRESULT_DEFINED
  158. typedef void __RPC_FAR *HANDLE;
  159.  
  160. typedef void __RPC_FAR *HMODULE;
  161.  
  162. typedef void __RPC_FAR *HINSTANCE;
  163.  
  164. typedef void __RPC_FAR *HRGN;
  165.  
  166. typedef void __RPC_FAR *HTASK;
  167.  
  168. typedef void __RPC_FAR *HKEY;
  169.  
  170. typedef void __RPC_FAR *HDESK;
  171.  
  172. typedef void __RPC_FAR *HMF;
  173.  
  174. typedef void __RPC_FAR *HEMF;
  175.  
  176. typedef void __RPC_FAR *HPEN;
  177.  
  178. typedef void __RPC_FAR *HRSRC;
  179.  
  180. typedef void __RPC_FAR *HSTR;
  181.  
  182. typedef void __RPC_FAR *HWINSTA;
  183.  
  184. typedef void __RPC_FAR *HKL;
  185.  
  186. typedef void __RPC_FAR *HGDIOBJ;
  187.  
  188. typedef HANDLE HDWP;
  189.  
  190. #ifndef _HFILE_DEFINED
  191. #define _HFILE_DEFINED
  192. typedef INT HFILE;
  193.  
  194. #endif // !_HFILE_DEFINED
  195. #ifndef _LPWORD_DEFINED
  196. #define _LPWORD_DEFINED
  197. typedef WORD __RPC_FAR *LPWORD;
  198.  
  199. #endif // !_LPWORD_DEFINED
  200. #ifndef _LPDWORD_DEFINED
  201. #define _LPDWORD_DEFINED
  202. typedef DWORD __RPC_FAR *LPDWORD;
  203.  
  204. #endif // !_LPDWORD_DEFINED
  205. typedef char CHAR;
  206.  
  207. typedef /* [string] */ CHAR __RPC_FAR *LPSTR;
  208.  
  209. typedef /* [string] */ const CHAR __RPC_FAR *LPCSTR;
  210.  
  211. #ifndef _WCHAR_DEFINED
  212. #define _WCHAR_DEFINED
  213. typedef wchar_t WCHAR;
  214.  
  215. typedef WCHAR TCHAR;
  216.  
  217. #endif // !_WCHAR_DEFINED
  218. typedef /* [string] */ WCHAR __RPC_FAR *LPWSTR;
  219.  
  220. typedef /* [string] */ TCHAR __RPC_FAR *LPTSTR;
  221.  
  222. typedef /* [string] */ const WCHAR __RPC_FAR *LPCWSTR;
  223.  
  224. typedef /* [string] */ const TCHAR __RPC_FAR *LPCTSTR;
  225.  
  226. typedef struct  tagPALETTEENTRY
  227.     {
  228.     BYTE peRed;
  229.     BYTE peGreen;
  230.     BYTE peBlue;
  231.     BYTE peFlags;
  232.     }    PALETTEENTRY;
  233.  
  234. typedef struct tagPALETTEENTRY __RPC_FAR *PPALETTEENTRY;
  235.  
  236. typedef struct tagPALETTEENTRY __RPC_FAR *LPPALETTEENTRY;
  237.  
  238. #if 0
  239. typedef struct  tagLOGPALETTE
  240.     {
  241.     WORD palVersion;
  242.     WORD palNumEntries;
  243.     /* [size_is] */ PALETTEENTRY palPalEntry[ 1 ];
  244.     }    LOGPALETTE;
  245.  
  246. typedef struct tagLOGPALETTE __RPC_FAR *PLOGPALETTE;
  247.  
  248. typedef struct tagLOGPALETTE __RPC_FAR *LPLOGPALETTE;
  249.  
  250. #else
  251. typedef struct tagLOGPALETTE {
  252.     WORD        palVersion;
  253.     WORD        palNumEntries;
  254.     PALETTEENTRY        palPalEntry[1];
  255. } LOGPALETTE, *PLOGPALETTE, *LPLOGPALETTE;
  256. #endif
  257. #ifndef _COLORREF_DEFINED
  258. #define _COLORREF_DEFINED
  259. typedef DWORD COLORREF;
  260.  
  261. #endif // !_COLORREF_DEFINED
  262. #ifndef _LPCOLORREF_DEFINED
  263. #define _LPCOLORREF_DEFINED
  264. typedef DWORD __RPC_FAR *LPCOLORREF;
  265.  
  266. #endif // !_LPCOLORREF_DEFINED
  267. typedef HANDLE __RPC_FAR *LPHANDLE;
  268.  
  269. typedef struct  _RECTL
  270.     {
  271.     LONG left;
  272.     LONG top;
  273.     LONG right;
  274.     LONG bottom;
  275.     }    RECTL;
  276.  
  277. typedef struct _RECTL __RPC_FAR *PRECTL;
  278.  
  279. typedef struct _RECTL __RPC_FAR *LPRECTL;
  280.  
  281. typedef struct  tagPOINT
  282.     {
  283.     LONG x;
  284.     LONG y;
  285.     }    POINT;
  286.  
  287. typedef struct tagPOINT __RPC_FAR *PPOINT;
  288.  
  289. typedef struct tagPOINT __RPC_FAR *LPPOINT;
  290.  
  291. typedef struct  _POINTL
  292.     {
  293.     LONG x;
  294.     LONG y;
  295.     }    POINTL;
  296.  
  297. typedef struct _POINTL __RPC_FAR *PPOINTL;
  298.  
  299. #ifndef WIN16
  300. typedef struct  tagSIZE
  301.     {
  302.     LONG cx;
  303.     LONG cy;
  304.     }    SIZE;
  305.  
  306. typedef struct tagSIZE __RPC_FAR *PSIZE;
  307.  
  308. typedef struct tagSIZE __RPC_FAR *LPSIZE;
  309.  
  310. #else // WIN16
  311. typedef struct tagSIZE
  312. {
  313.     INT cx;
  314.     INT cy;
  315. } SIZE, *PSIZE, *LPSIZE;
  316. #endif // WIN16
  317. typedef struct  tagSIZEL
  318.     {
  319.     LONG cx;
  320.     LONG cy;
  321.     }    SIZEL;
  322.  
  323. typedef struct tagSIZEL __RPC_FAR *PSIZEL;
  324.  
  325. typedef struct tagSIZEL __RPC_FAR *LPSIZEL;
  326.  
  327. #endif  //WINAPI
  328. #endif  //!WIN32 && !MPPC
  329. #if defined(_WIN32) && !defined(OLE2ANSI)
  330. typedef WCHAR OLECHAR;
  331.  
  332. typedef /* [string] */ OLECHAR __RPC_FAR *LPOLESTR;
  333.  
  334. typedef /* [string] */ const OLECHAR __RPC_FAR *LPCOLESTR;
  335.  
  336. #define OLESTR(str) L##str
  337.  
  338. #else
  339.  
  340. typedef char      OLECHAR;
  341. typedef LPSTR     LPOLESTR;
  342. typedef LPCSTR    LPCOLESTR;
  343. #define OLESTR(str) str
  344. #endif
  345. #ifndef _WINDEF_
  346. typedef const RECTL __RPC_FAR *LPCRECTL;
  347.  
  348. typedef void __RPC_FAR *PVOID;
  349.  
  350. typedef void __RPC_FAR *LPVOID;
  351.  
  352. typedef float FLOAT;
  353.  
  354. typedef struct  tagRECT
  355.     {
  356.     LONG left;
  357.     LONG top;
  358.     LONG right;
  359.     LONG bottom;
  360.     }    RECT;
  361.  
  362. typedef struct tagRECT __RPC_FAR *PRECT;
  363.  
  364. typedef struct tagRECT __RPC_FAR *LPRECT;
  365.  
  366. typedef const RECT __RPC_FAR *LPCRECT;
  367.  
  368. #endif  //_WINDEF_
  369. typedef unsigned char UCHAR;
  370.  
  371. typedef short SHORT;
  372.  
  373. typedef unsigned short USHORT;
  374.  
  375. typedef DWORD ULONG;
  376.  
  377. typedef double DOUBLE;
  378.  
  379. #ifndef _DWORDLONG_
  380. typedef MIDL_uhyper DWORDLONG;
  381.  
  382. typedef DWORDLONG __RPC_FAR *PDWORDLONG;
  383.  
  384. #endif // !_DWORDLONG_
  385. #ifndef _ULONGLONG_
  386. typedef hyper LONGLONG;
  387.  
  388. typedef MIDL_uhyper ULONGLONG;
  389.  
  390. typedef LONGLONG __RPC_FAR *PLONGLONG;
  391.  
  392. typedef ULONGLONG __RPC_FAR *PULONGLONG;
  393.  
  394. #endif // _ULONGLONG_
  395. #if 0
  396. typedef struct  _LARGE_INTEGER
  397.     {
  398.     LONGLONG QuadPart;
  399.     }    LARGE_INTEGER;
  400.  
  401. typedef LARGE_INTEGER __RPC_FAR *PLARGE_INTEGER;
  402.  
  403. typedef struct  _ULARGE_INTEGER
  404.     {
  405.     ULONGLONG QuadPart;
  406.     }    ULARGE_INTEGER;
  407.  
  408. #endif // 0
  409. #ifndef _WINBASE_
  410. #ifndef _FILETIME_
  411. #define _FILETIME_
  412. typedef struct  _FILETIME
  413.     {
  414.     DWORD dwLowDateTime;
  415.     DWORD dwHighDateTime;
  416.     }    FILETIME;
  417.  
  418. typedef struct _FILETIME __RPC_FAR *PFILETIME;
  419.  
  420. typedef struct _FILETIME __RPC_FAR *LPFILETIME;
  421.  
  422. #endif // !_FILETIME
  423. #ifndef _SYSTEMTIME_
  424. #define _SYSTEMTIME_
  425. typedef struct  _SYSTEMTIME
  426.     {
  427.     WORD wYear;
  428.     WORD wMonth;
  429.     WORD wDayOfWeek;
  430.     WORD wDay;
  431.     WORD wHour;
  432.     WORD wMinute;
  433.     WORD wSecond;
  434.     WORD wMilliseconds;
  435.     }    SYSTEMTIME;
  436.  
  437. typedef struct _SYSTEMTIME __RPC_FAR *PSYSTEMTIME;
  438.  
  439. typedef struct _SYSTEMTIME __RPC_FAR *LPSYSTEMTIME;
  440.  
  441. #endif // !_SYSTEMTIME
  442. #ifndef _SECURITY_ATTRIBUTES_
  443. #define _SECURITY_ATTRIBUTES_
  444. typedef struct  _SECURITY_ATTRIBUTES
  445.     {
  446.     DWORD nLength;
  447.     /* [size_is] */ LPVOID lpSecurityDescriptor;
  448.     BOOL bInheritHandle;
  449.     }    SECURITY_ATTRIBUTES;
  450.  
  451. typedef struct _SECURITY_ATTRIBUTES __RPC_FAR *PSECURITY_ATTRIBUTES;
  452.  
  453. typedef struct _SECURITY_ATTRIBUTES __RPC_FAR *LPSECURITY_ATTRIBUTES;
  454.  
  455. #endif // !_SECURITY_ATTRIBUTES_
  456. #ifndef SECURITY_DESCRIPTOR_REVISION
  457. typedef USHORT SECURITY_DESCRIPTOR_CONTROL;
  458.  
  459. typedef USHORT __RPC_FAR *PSECURITY_DESCRIPTOR_CONTROL;
  460.  
  461. typedef PVOID PSID;
  462.  
  463. typedef struct  _ACL
  464.     {
  465.     UCHAR AclRevision;
  466.     UCHAR Sbz1;
  467.     USHORT AclSize;
  468.     USHORT AceCount;
  469.     USHORT Sbz2;
  470.     }    ACL;
  471.  
  472. typedef ACL __RPC_FAR *PACL;
  473.  
  474. typedef struct  _SECURITY_DESCRIPTOR
  475.     {
  476.     UCHAR Revision;
  477.     UCHAR Sbz1;
  478.     SECURITY_DESCRIPTOR_CONTROL Control;
  479.     PSID Owner;
  480.     PSID Group;
  481.     PACL Sacl;
  482.     PACL Dacl;
  483.     }    SECURITY_DESCRIPTOR;
  484.  
  485. typedef struct _SECURITY_DESCRIPTOR __RPC_FAR *PISECURITY_DESCRIPTOR;
  486.  
  487. #endif // !SECURITY_DESCRIPTOR_REVISION
  488. #endif //_WINBASE_
  489. typedef struct  _COAUTHIDENTITY
  490.     {
  491.     /* [size_is] */ USHORT __RPC_FAR *User;
  492.     ULONG UserLength;
  493.     /* [size_is] */ USHORT __RPC_FAR *Domain;
  494.     ULONG DomainLength;
  495.     /* [size_is] */ USHORT __RPC_FAR *Password;
  496.     ULONG PasswordLength;
  497.     ULONG Flags;
  498.     }    COAUTHIDENTITY;
  499.  
  500. typedef struct  _COAUTHINFO
  501.     {
  502.     DWORD dwAuthnSvc;
  503.     DWORD dwAuthzSvc;
  504.     LPWSTR pwszServerPrincName;
  505.     DWORD dwAuthnLevel;
  506.     DWORD dwImpersonationLevel;
  507.     COAUTHIDENTITY __RPC_FAR *pAuthIdentityData;
  508.     DWORD dwCapabilities;
  509.     }    COAUTHINFO;
  510.  
  511. typedef LONG SCODE;
  512.  
  513. #ifndef _HRESULT_DEFINED
  514. #define _HRESULT_DEFINED
  515. typedef LONG HRESULT;
  516.  
  517. #endif // !_HRESULT_DEFINED
  518. typedef SCODE __RPC_FAR *PSCODE;
  519.  
  520. #ifndef GUID_DEFINED
  521. #define GUID_DEFINED
  522. typedef struct  _GUID
  523.     {
  524.     DWORD Data1;
  525.     WORD Data2;
  526.     WORD Data3;
  527.     BYTE Data4[ 8 ];
  528.     }    GUID;
  529.  
  530. #endif // !GUID_DEFINED
  531. #if !defined( __LPGUID_DEFINED__ )
  532. #define __LPGUID_DEFINED__
  533. typedef GUID __RPC_FAR *LPGUID;
  534.  
  535. #endif // !__LPGUID_DEFINED__
  536. #ifndef __OBJECTID_DEFINED
  537. #define __OBJECTID_DEFINED
  538. #define _OBJECTID_DEFINED
  539. typedef struct  _OBJECTID
  540.     {
  541.     GUID Lineage;
  542.     unsigned long Uniquifier;
  543.     }    OBJECTID;
  544.  
  545. #endif // !_OBJECTID_DEFINED
  546. #if !defined( __IID_DEFINED__ )
  547. #define __IID_DEFINED__
  548. typedef GUID IID;
  549.  
  550. typedef IID __RPC_FAR *LPIID;
  551.  
  552. #define IID_NULL            GUID_NULL
  553. #define IsEqualIID(riid1, riid2) IsEqualGUID(riid1, riid2)
  554. typedef GUID CLSID;
  555.  
  556. typedef CLSID __RPC_FAR *LPCLSID;
  557.  
  558. #define CLSID_NULL          GUID_NULL
  559. #define IsEqualCLSID(rclsid1, rclsid2) IsEqualGUID(rclsid1, rclsid2)
  560. typedef GUID FMTID;
  561.  
  562. typedef FMTID __RPC_FAR *LPFMTID;
  563.  
  564. #define FMTID_NULL          GUID_NULL
  565. #define IsEqualFMTID(rfmtid1, rfmtid2) IsEqualGUID(rfmtid1, rfmtid2)
  566. #if 0
  567. typedef GUID __RPC_FAR *REFGUID;
  568.  
  569. typedef IID __RPC_FAR *REFIID;
  570.  
  571. typedef CLSID __RPC_FAR *REFCLSID;
  572.  
  573. typedef FMTID __RPC_FAR *REFFMTID;
  574.  
  575. #endif // 0
  576. #if defined(__cplusplus)
  577. #ifndef _REFGUID_DEFINED
  578. #define _REFGUID_DEFINED
  579. #define REFGUID             const GUID &
  580. #endif // !_REFGUID_DEFINED
  581. #ifndef _REFIID_DEFINED
  582. #define _REFIID_DEFINED
  583. #define REFIID              const IID &
  584. #endif // !_REFIID_DEFINED
  585. #ifndef _REFCLSID_DEFINED
  586. #define _REFCLSID_DEFINED
  587. #define REFCLSID            const CLSID &
  588. #endif // !_REFCLSID_DEFINED
  589. #ifndef _REFFMTID_DEFINED
  590. #define _REFFMTID_DEFINED
  591. #define REFFMTID            const FMTID &
  592. #endif // !_REFFMTID_DEFINED
  593. #else // !__cplusplus
  594. #ifndef _REFGUID_DEFINED
  595. #define _REFGUID_DEFINED
  596. #define REFGUID             const GUID * const
  597. #endif // !_REFGUID_DEFINED
  598. #ifndef _REFIID_DEFINED
  599. #define _REFIID_DEFINED
  600. #define REFIID              const IID * const
  601. #endif // !_REFIID_DEFINED
  602. #ifndef _REFCLSID_DEFINED
  603. #define _REFCLSID_DEFINED
  604. #define REFCLSID            const CLSID * const
  605. #endif // !_REFCLSID_DEFINED
  606. #ifndef _REFFMTID_DEFINED
  607. #define _REFFMTID_DEFINED
  608. #define REFFMTID            const FMTID * const
  609. #endif // !_REFFMTID_DEFINED
  610. #endif // !__cplusplus
  611. #endif // !__IID_DEFINED__
  612. typedef 
  613. enum tagMEMCTX
  614.     {    MEMCTX_TASK    = 1,
  615.     MEMCTX_SHARED    = 2,
  616.     MEMCTX_MACSYSTEM    = 3,
  617.     MEMCTX_UNKNOWN    = -1,
  618.     MEMCTX_SAME    = -2
  619.     }    MEMCTX;
  620.  
  621. #ifndef _ROTFLAGS_DEFINED
  622. #define _ROTFLAGS_DEFINED
  623. #define ROTFLAGS_REGISTRATIONKEEPSALIVE 0x1
  624. #define ROTFLAGS_ALLOWANYCLIENT 0x2
  625. #endif // !_ROTFLAGS_DEFINED
  626. #ifndef _ROT_COMPARE_MAX_DEFINED
  627. #define _ROT_COMPARE_MAX_DEFINED
  628. #define ROT_COMPARE_MAX 2048
  629. #endif // !_ROT_COMPARE_MAX_DEFINED
  630. typedef 
  631. enum tagCLSCTX
  632.     {    CLSCTX_INPROC_SERVER    = 0x1,
  633.     CLSCTX_INPROC_HANDLER    = 0x2,
  634.     CLSCTX_LOCAL_SERVER    = 0x4,
  635.     CLSCTX_INPROC_SERVER16    = 0x8,
  636.     CLSCTX_REMOTE_SERVER    = 0x10,
  637.     CLSCTX_INPROC_HANDLER16    = 0x20,
  638.     CLSCTX_INPROC_SERVERX86    = 0x40,
  639.     CLSCTX_INPROC_HANDLERX86    = 0x80,
  640.     CLSCTX_ESERVER_HANDLER    = 0x100
  641.     }    CLSCTX;
  642.  
  643. typedef 
  644. enum tagMSHLFLAGS
  645.     {    MSHLFLAGS_NORMAL    = 0,
  646.     MSHLFLAGS_TABLESTRONG    = 1,
  647.     MSHLFLAGS_TABLEWEAK    = 2,
  648.     MSHLFLAGS_NOPING    = 4
  649.     }    MSHLFLAGS;
  650.  
  651. typedef 
  652. enum tagMSHCTX
  653.     {    MSHCTX_LOCAL    = 0,
  654.     MSHCTX_NOSHAREDMEM    = 1,
  655.     MSHCTX_DIFFERENTMACHINE    = 2,
  656.     MSHCTX_INPROC    = 3
  657.     }    MSHCTX;
  658.  
  659. typedef 
  660. enum tagDVASPECT
  661.     {    DVASPECT_CONTENT    = 1,
  662.     DVASPECT_THUMBNAIL    = 2,
  663.     DVASPECT_ICON    = 4,
  664.     DVASPECT_DOCPRINT    = 8
  665.     }    DVASPECT;
  666.  
  667. typedef 
  668. enum tagSTGC
  669.     {    STGC_DEFAULT    = 0,
  670.     STGC_OVERWRITE    = 1,
  671.     STGC_ONLYIFCURRENT    = 2,
  672.     STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE    = 4,
  673.     STGC_CONSOLIDATE    = 8
  674.     }    STGC;
  675.  
  676. typedef 
  677. enum tagSTGMOVE
  678.     {    STGMOVE_MOVE    = 0,
  679.     STGMOVE_COPY    = 1,
  680.     STGMOVE_SHALLOWCOPY    = 2
  681.     }    STGMOVE;
  682.  
  683. typedef 
  684. enum tagSTATFLAG
  685.     {    STATFLAG_DEFAULT    = 0,
  686.     STATFLAG_NONAME    = 1,
  687.     STATFLAG_NOOPEN    = 2
  688.     }    STATFLAG;
  689.  
  690. typedef /* [context_handle] */ void __RPC_FAR *HCONTEXT;
  691.  
  692. #ifndef _LCID_DEFINED
  693. #define _LCID_DEFINED
  694. typedef DWORD LCID;
  695.  
  696. #endif // !_LCID_DEFINED
  697. typedef struct  _BYTE_BLOB
  698.     {
  699.     unsigned long clSize;
  700.     /* [size_is] */ byte abData[ 1 ];
  701.     }    BYTE_BLOB;
  702.  
  703. typedef /* [unique] */ BYTE_BLOB __RPC_FAR *UP_BYTE_BLOB;
  704.  
  705. typedef struct  _WORD_BLOB
  706.     {
  707.     unsigned long clSize;
  708.     /* [size_is] */ unsigned short asData[ 1 ];
  709.     }    WORD_BLOB;
  710.  
  711. typedef /* [unique] */ WORD_BLOB __RPC_FAR *UP_WORD_BLOB;
  712.  
  713. typedef struct  _DWORD_BLOB
  714.     {
  715.     unsigned long clSize;
  716.     /* [size_is] */ unsigned long alData[ 1 ];
  717.     }    DWORD_BLOB;
  718.  
  719. typedef /* [unique] */ DWORD_BLOB __RPC_FAR *UP_DWORD_BLOB;
  720.  
  721. typedef struct  _FLAGGED_BYTE_BLOB
  722.     {
  723.     unsigned long fFlags;
  724.     unsigned long clSize;
  725.     /* [size_is] */ byte abData[ 1 ];
  726.     }    FLAGGED_BYTE_BLOB;
  727.  
  728. typedef /* [unique] */ FLAGGED_BYTE_BLOB __RPC_FAR *UP_FLAGGED_BYTE_BLOB;
  729.  
  730. typedef struct  _FLAGGED_WORD_BLOB
  731.     {
  732.     unsigned long fFlags;
  733.     unsigned long clSize;
  734.     /* [size_is] */ unsigned short asData[ 1 ];
  735.     }    FLAGGED_WORD_BLOB;
  736.  
  737. typedef /* [unique] */ FLAGGED_WORD_BLOB __RPC_FAR *UP_FLAGGED_WORD_BLOB;
  738.  
  739. typedef struct  _BYTE_SIZEDARR
  740.     {
  741.     unsigned long clSize;
  742.     /* [size_is] */ byte __RPC_FAR *pData;
  743.     }    BYTE_SIZEDARR;
  744.  
  745. typedef struct  _SHORT_SIZEDARR
  746.     {
  747.     unsigned long clSize;
  748.     /* [size_is] */ unsigned short __RPC_FAR *pData;
  749.     }    WORD_SIZEDARR;
  750.  
  751. typedef struct  _LONG_SIZEDARR
  752.     {
  753.     unsigned long clSize;
  754.     /* [size_is] */ unsigned long __RPC_FAR *pData;
  755.     }    DWORD_SIZEDARR;
  756.  
  757. typedef struct  _HYPER_SIZEDARR
  758.     {
  759.     unsigned long clSize;
  760.     /* [size_is] */ hyper __RPC_FAR *pData;
  761.     }    HYPER_SIZEDARR;
  762.  
  763. #define    WDT_INPROC_CALL    ( 0x48746457 )
  764.  
  765. #define    WDT_REMOTE_CALL    ( 0x52746457 )
  766.  
  767. typedef struct  _userCLIPFORMAT
  768.     {
  769.     long fContext;
  770.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0001
  771.         {
  772.         /* [case()] */ DWORD dwValue;
  773.         /* [case()][string] */ wchar_t __RPC_FAR *pwszName;
  774.         }    u;
  775.     }    userCLIPFORMAT;
  776.  
  777. typedef /* [unique] */ userCLIPFORMAT __RPC_FAR *wireCLIPFORMAT;
  778.  
  779. typedef /* [wire_marshal] */ WORD CLIPFORMAT;
  780.  
  781. typedef struct  _GDI_NONREMOTE
  782.     {
  783.     long fContext;
  784.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0002
  785.         {
  786.         /* [case()] */ long hInproc;
  787.         /* [case()] */ DWORD_BLOB __RPC_FAR *hRemote;
  788.         }    u;
  789.     }    GDI_NONREMOTE;
  790.  
  791. typedef struct  _userHGLOBAL
  792.     {
  793.     long fContext;
  794.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0003
  795.         {
  796.         /* [case()] */ long hInproc;
  797.         /* [case()] */ FLAGGED_BYTE_BLOB __RPC_FAR *hRemote;
  798.         /* [default] */ long hGlobal;
  799.         }    u;
  800.     }    userHGLOBAL;
  801.  
  802. typedef /* [unique] */ userHGLOBAL __RPC_FAR *wireHGLOBAL;
  803.  
  804. typedef struct  _userHMETAFILE
  805.     {
  806.     long fContext;
  807.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0004
  808.         {
  809.         /* [case()] */ long hInproc;
  810.         /* [case()] */ BYTE_BLOB __RPC_FAR *hRemote;
  811.         /* [default] */ long hGlobal;
  812.         }    u;
  813.     }    userHMETAFILE;
  814.  
  815. typedef struct  _remoteMETAFILEPICT
  816.     {
  817.     long mm;
  818.     long xExt;
  819.     long yExt;
  820.     userHMETAFILE __RPC_FAR *hMF;
  821.     }    remoteMETAFILEPICT;
  822.  
  823. typedef struct  _userHMETAFILEPICT
  824.     {
  825.     long fContext;
  826.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0005
  827.         {
  828.         /* [case()] */ long hInproc;
  829.         /* [case()] */ remoteMETAFILEPICT __RPC_FAR *hRemote;
  830.         /* [default] */ long hGlobal;
  831.         }    u;
  832.     }    userHMETAFILEPICT;
  833.  
  834. typedef struct  _userHENHMETAFILE
  835.     {
  836.     long fContext;
  837.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0006
  838.         {
  839.         /* [case()] */ long hInproc;
  840.         /* [case()] */ BYTE_BLOB __RPC_FAR *hRemote;
  841.         /* [default] */ long hGlobal;
  842.         }    u;
  843.     }    userHENHMETAFILE;
  844.  
  845. typedef struct  _userBITMAP
  846.     {
  847.     LONG bmType;
  848.     LONG bmWidth;
  849.     LONG bmHeight;
  850.     LONG bmWidthBytes;
  851.     WORD bmPlanes;
  852.     WORD bmBitsPixel;
  853.     ULONG cbSize;
  854.     /* [size_is] */ byte pBuffer[ 1 ];
  855.     }    userBITMAP;
  856.  
  857. typedef struct  _userHBITMAP
  858.     {
  859.     long fContext;
  860.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0007
  861.         {
  862.         /* [case()] */ long hInproc;
  863.         /* [case()] */ userBITMAP __RPC_FAR *hRemote;
  864.         /* [default] */ long hGlobal;
  865.         }    u;
  866.     }    userHBITMAP;
  867.  
  868. typedef struct  tagrpcLOGPALETTE
  869.     {
  870.     WORD palVersion;
  871.     WORD palNumEntries;
  872.     /* [size_is] */ PALETTEENTRY palPalEntry[ 1 ];
  873.     }    rpcLOGPALETTE;
  874.  
  875. typedef struct  _userHPALETTE
  876.     {
  877.     long fContext;
  878.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0008
  879.         {
  880.         /* [case()] */ long hInproc;
  881.         /* [case()] */ rpcLOGPALETTE __RPC_FAR *hRemote;
  882.         /* [default] */ long hGlobal;
  883.         }    u;
  884.     }    userHPALETTE;
  885.  
  886. typedef struct  _RemotableHandle
  887.     {
  888.     long fContext;
  889.     /* [switch_is] */ /* [switch_type] */ union __MIDL_IWinTypes_0009
  890.         {
  891.         /* [case()] */ long hInproc;
  892.         /* [case()] */ long hRemote;
  893.         }    u;
  894.     }    RemotableHandle;
  895.  
  896. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHWND;
  897.  
  898. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHMENU;
  899.  
  900. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHACCEL;
  901.  
  902. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHBRUSH;
  903.  
  904. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHFONT;
  905.  
  906. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHDC;
  907.  
  908. typedef /* [unique] */ RemotableHandle __RPC_FAR *wireHICON;
  909.  
  910. #if 0
  911. typedef /* [wire_marshal] */ void __RPC_FAR *HWND;
  912.  
  913. typedef /* [wire_marshal] */ void __RPC_FAR *HMENU;
  914.  
  915. typedef /* [wire_marshal] */ void __RPC_FAR *HACCEL;
  916.  
  917. typedef /* [wire_marshal] */ void __RPC_FAR *HBRUSH;
  918.  
  919. typedef /* [wire_marshal] */ void __RPC_FAR *HFONT;
  920.  
  921. typedef /* [wire_marshal] */ void __RPC_FAR *HDC;
  922.  
  923. typedef /* [wire_marshal] */ void __RPC_FAR *HICON;
  924.  
  925. #ifndef _HCURSOR_DEFINED
  926. #define _HCURSOR_DEFINED
  927. typedef HICON HCURSOR;
  928.  
  929. #endif // !_HCURSOR_DEFINED
  930. /* tagTEXTMETRICW was copied from wingdi.h for MIDL */
  931. typedef struct  tagTEXTMETRICW
  932.     {
  933.     LONG tmHeight;
  934.     LONG tmAscent;
  935.     LONG tmDescent;
  936.     LONG tmInternalLeading;
  937.     LONG tmExternalLeading;
  938.     LONG tmAveCharWidth;
  939.     LONG tmMaxCharWidth;
  940.     LONG tmWeight;
  941.     LONG tmOverhang;
  942.     LONG tmDigitizedAspectX;
  943.     LONG tmDigitizedAspectY;
  944.     WCHAR tmFirstChar;
  945.     WCHAR tmLastChar;
  946.     WCHAR tmDefaultChar;
  947.     WCHAR tmBreakChar;
  948.     BYTE tmItalic;
  949.     BYTE tmUnderlined;
  950.     BYTE tmStruckOut;
  951.     BYTE tmPitchAndFamily;
  952.     BYTE tmCharSet;
  953.     }    TEXTMETRICW;
  954.  
  955. #endif //0
  956. #ifndef _WIN32           // The following code is for Win16 only
  957. #ifndef WINAPI          // If not included with 3.1 headers...
  958. typedef struct  tagMSG
  959.     {
  960.     HWND hwnd;
  961.     UINT message;
  962.     WPARAM wParam;
  963.     LPARAM lParam;
  964.     DWORD time;
  965.     POINT pt;
  966.     }    MSG;
  967.  
  968. typedef struct tagMSG __RPC_FAR *PMSG;
  969.  
  970. typedef struct tagMSG __RPC_FAR *NPMSG;
  971.  
  972. typedef struct tagMSG __RPC_FAR *LPMSG;
  973.  
  974. #endif // _WIN32
  975. #endif // WINAPI
  976. typedef /* [unique] */ userHBITMAP __RPC_FAR *wireHBITMAP;
  977.  
  978. typedef /* [unique] */ userHPALETTE __RPC_FAR *wireHPALETTE;
  979.  
  980. typedef /* [unique] */ userHENHMETAFILE __RPC_FAR *wireHENHMETAFILE;
  981.  
  982. typedef /* [unique] */ userHMETAFILE __RPC_FAR *wireHMETAFILE;
  983.  
  984. typedef /* [unique] */ userHMETAFILEPICT __RPC_FAR *wireHMETAFILEPICT;
  985.  
  986. #if 0
  987. typedef /* [wire_marshal] */ void __RPC_FAR *HGLOBAL;
  988.  
  989. typedef HGLOBAL HLOCAL;
  990.  
  991. typedef /* [wire_marshal] */ void __RPC_FAR *HBITMAP;
  992.  
  993. typedef /* [wire_marshal] */ void __RPC_FAR *HPALETTE;
  994.  
  995. typedef /* [wire_marshal] */ void __RPC_FAR *HENHMETAFILE;
  996.  
  997. typedef /* [wire_marshal] */ void __RPC_FAR *HMETAFILE;
  998.  
  999. #endif //0
  1000. typedef /* [wire_marshal] */ void __RPC_FAR *HMETAFILEPICT;
  1001.  
  1002.  
  1003.  
  1004. extern RPC_IF_HANDLE IWinTypes_v0_1_c_ifspec;
  1005. extern RPC_IF_HANDLE IWinTypes_v0_1_s_ifspec;
  1006. #endif /* __IWinTypes_INTERFACE_DEFINED__ */
  1007.  
  1008. /****************************************
  1009.  * Generated header for interface: __MIDL_itf_wtypes_0001
  1010.  * at Thu Sep 11 10:57:03 1997
  1011.  * using MIDL 3.03.0110
  1012.  ****************************************/
  1013. /* [local] */ 
  1014.  
  1015.  
  1016. #if ( _MSC_VER >= 800 )
  1017. #pragma warning(disable:4201)
  1018. #endif
  1019. typedef double DATE;
  1020.  
  1021. #ifndef _tagCY_DEFINED
  1022. #define _tagCY_DEFINED
  1023. #define _CY_DEFINED
  1024. #if 0
  1025. /* the following isn't the real definition of CY, but it is */
  1026. /* what RPC knows how to remote */
  1027. typedef struct  tagCY
  1028.     {
  1029.     LONGLONG int64;
  1030.     }    CY;
  1031.  
  1032. #else /* 0 */
  1033. /* real definition that makes the C++ compiler happy */
  1034. typedef union tagCY {
  1035.     struct {
  1036. #ifdef _MAC
  1037.         long      Hi;
  1038.         long Lo;
  1039. #else
  1040.         unsigned long Lo;
  1041.         long      Hi;
  1042. #endif
  1043.     };
  1044.     LONGLONG int64;
  1045. } CY;
  1046. #endif /* 0 */
  1047. #endif /* _tagCY_DEFINED */
  1048. typedef CY __RPC_FAR *LPCY;
  1049.  
  1050. #if 0 /* _tagDEC_DEFINED */
  1051. /* The following isn't the real definition of Decimal type, */
  1052. /* but it is what RPC knows how to remote */
  1053. typedef struct  tagDEC
  1054.     {
  1055.     USHORT wReserved;
  1056.     BYTE scale;
  1057.     BYTE sign;
  1058.     ULONG Hi32;
  1059.     ULONGLONG Lo64;
  1060.     }    DECIMAL;
  1061.  
  1062. #else /* _tagDEC_DEFINED */
  1063. /* real definition that makes the C++ compiler happy */
  1064. typedef struct tagDEC {
  1065.     USHORT wReserved;
  1066.     union {
  1067.         struct {
  1068.             BYTE scale;
  1069.             BYTE sign;
  1070.         };
  1071.         USHORT signscale;
  1072.     };
  1073.     ULONG Hi32;
  1074.     union {
  1075.         struct {
  1076. #ifdef _MAC
  1077.             ULONG Mid32;
  1078.             ULONG Lo32;
  1079. #else
  1080.             ULONG Lo32;
  1081.             ULONG Mid32;
  1082. #endif
  1083.         };
  1084.         ULONGLONG Lo64;
  1085.     };
  1086. } DECIMAL;
  1087. #define DECIMAL_NEG ((BYTE)0x80)
  1088. #define DECIMAL_SETZERO(dec) \
  1089.         {(dec).Lo64 = 0; (dec).Hi32 = 0; (dec).signscale = 0;}
  1090. #endif /* _tagDEC_DEFINED */
  1091. typedef DECIMAL __RPC_FAR *LPDECIMAL;
  1092.  
  1093. #if ( _MSC_VER >= 800 )
  1094. #pragma warning(default:4201)
  1095. #endif
  1096. typedef /* [unique] */ FLAGGED_WORD_BLOB __RPC_FAR *wireBSTR;
  1097.  
  1098. typedef /* [wire_marshal] */ OLECHAR __RPC_FAR *BSTR;
  1099.  
  1100. typedef BSTR __RPC_FAR *LPBSTR;
  1101.  
  1102. /* 0 == FALSE, -1 == TRUE */
  1103. typedef short VARIANT_BOOL;
  1104.  
  1105. #if !__STDC__ && (_MSC_VER <= 1000)
  1106. /* For backward compatibility */
  1107. typedef VARIANT_BOOL _VARIANT_BOOL;
  1108.  
  1109. #else
  1110. /* ANSI C/C++ reserve bool as keyword */
  1111. #define _VARIANT_BOOL    /##/
  1112. #endif
  1113. typedef boolean BOOLEAN;
  1114.  
  1115. /* The BSTRBLOB structure is used by some implementations */
  1116. /* of the IPropertyStorage interface when marshaling BSTRs */
  1117. /* on systems which don't support BSTR marshaling. */
  1118. #ifndef _tagBSTRBLOB_DEFINED
  1119. #define _tagBSTRBLOB_DEFINED
  1120. typedef struct  tagBSTRBLOB
  1121.     {
  1122.     ULONG cbSize;
  1123.     /* [size_is] */ BYTE __RPC_FAR *pData;
  1124.     }    BSTRBLOB;
  1125.  
  1126. typedef struct tagBSTRBLOB __RPC_FAR *LPBSTRBLOB;
  1127.  
  1128. #endif
  1129. #define VARIANT_TRUE ((VARIANT_BOOL)0xffff)
  1130. #define VARIANT_FALSE ((VARIANT_BOOL)0)
  1131. #ifndef _tagBLOB_DEFINED
  1132. #define _tagBLOB_DEFINED
  1133. #define _BLOB_DEFINED
  1134. #define _LPBLOB_DEFINED
  1135. typedef struct  tagBLOB
  1136.     {
  1137.     ULONG cbSize;
  1138.     /* [size_is] */ BYTE __RPC_FAR *pBlobData;
  1139.     }    BLOB;
  1140.  
  1141. typedef struct tagBLOB __RPC_FAR *LPBLOB;
  1142.  
  1143. #endif
  1144. typedef struct  tagCLIPDATA
  1145.     {
  1146.     ULONG cbSize;
  1147.     long ulClipFmt;
  1148.     /* [size_is] */ BYTE __RPC_FAR *pClipData;
  1149.     }    CLIPDATA;
  1150.  
  1151. // Macro to calculate the size of the above pClipData
  1152. #define CBPCLIPDATA(clipdata)    ( (clipdata).cbSize - sizeof((clipdata).ulClipFmt) )
  1153. typedef unsigned short VARTYPE;
  1154.  
  1155. /*
  1156.  * VARENUM usage key,
  1157.  *
  1158.  * * [V] - may appear in a VARIANT
  1159.  * * [T] - may appear in a TYPEDESC
  1160.  * * [P] - may appear in an OLE property set
  1161.  * * [S] - may appear in a Safe Array
  1162.  *
  1163.  *
  1164.  *  VT_EMPTY            [V]   [P]     nothing
  1165.  *  VT_NULL             [V]   [P]     SQL style Null
  1166.  *  VT_I2               [V][T][P][S]  2 byte signed int
  1167.  *  VT_I4               [V][T][P][S]  4 byte signed int
  1168.  *  VT_R4               [V][T][P][S]  4 byte real
  1169.  *  VT_R8               [V][T][P][S]  8 byte real
  1170.  *  VT_CY               [V][T][P][S]  currency
  1171.  *  VT_DATE             [V][T][P][S]  date
  1172.  *  VT_BSTR             [V][T][P][S]  OLE Automation string
  1173.  *  VT_DISPATCH         [V][T][P][S]  IDispatch *
  1174.  *  VT_ERROR            [V][T][P][S]  SCODE
  1175.  *  VT_BOOL             [V][T][P][S]  True=-1, False=0
  1176.  *  VT_VARIANT          [V][T][P][S]  VARIANT *
  1177.  *  VT_UNKNOWN          [V][T]   [S]  IUnknown *
  1178.  *  VT_DECIMAL          [V][T]   [S]  16 byte fixed point
  1179.  *  VT_RECORD           [V]   [P][S]  user defined type
  1180.  *  VT_I1               [V][T][P][s]  signed char
  1181.  *  VT_UI1              [V][T][P][S]  unsigned char
  1182.  *  VT_UI2              [V][T][P][S]  unsigned short
  1183.  *  VT_UI4              [V][T][P][S]  unsigned short
  1184.  *  VT_I8                  [T][P]     signed 64-bit int
  1185.  *  VT_UI8                 [T][P]     unsigned 64-bit int
  1186.  *  VT_INT              [V][T][P][S]  signed machine int
  1187.  *  VT_UINT             [V][T]   [S]  unsigned machine int
  1188.  *  VT_VOID                [T]        C style void
  1189.  *  VT_HRESULT             [T]        Standard return type
  1190.  *  VT_PTR                 [T]        pointer type
  1191.  *  VT_SAFEARRAY           [T]        (use VT_ARRAY in VARIANT)
  1192.  *  VT_CARRAY              [T]        C style array
  1193.  *  VT_USERDEFINED         [T]        user defined type
  1194.  *  VT_LPSTR               [T][P]     null terminated string
  1195.  *  VT_LPWSTR              [T][P]     wide null terminated string
  1196.  *  VT_FILETIME               [P]     FILETIME
  1197.  *  VT_BLOB                   [P]     Length prefixed bytes
  1198.  *  VT_STREAM                 [P]     Name of the stream follows
  1199.  *  VT_STORAGE                [P]     Name of the storage follows
  1200.  *  VT_STREAMED_OBJECT        [P]     Stream contains an object
  1201.  *  VT_STORED_OBJECT          [P]     Storage contains an object
  1202.  *  VT_BLOB_OBJECT            [P]     Blob contains an object 
  1203.  *  VT_CF                     [P]     Clipboard format
  1204.  *  VT_CLSID                  [P]     A Class ID
  1205.  *  VT_VECTOR                 [P]     simple counted array
  1206.  *  VT_ARRAY            [V]           SAFEARRAY*
  1207.  *  VT_BYREF            [V]           void* for local use
  1208.  *  VT_BSTR_BLOB                      Reserved for system use
  1209.  */
  1210.  
  1211. enum VARENUM
  1212.     {    VT_EMPTY    = 0,
  1213.     VT_NULL    = 1,
  1214.     VT_I2    = 2,
  1215.     VT_I4    = 3,
  1216.     VT_R4    = 4,
  1217.     VT_R8    = 5,
  1218.     VT_CY    = 6,
  1219.     VT_DATE    = 7,
  1220.     VT_BSTR    = 8,
  1221.     VT_DISPATCH    = 9,
  1222.     VT_ERROR    = 10,
  1223.     VT_BOOL    = 11,
  1224.     VT_VARIANT    = 12,
  1225.     VT_UNKNOWN    = 13,
  1226.     VT_DECIMAL    = 14,
  1227.     VT_I1    = 16,
  1228.     VT_UI1    = 17,
  1229.     VT_UI2    = 18,
  1230.     VT_UI4    = 19,
  1231.     VT_I8    = 20,
  1232.     VT_UI8    = 21,
  1233.     VT_INT    = 22,
  1234.     VT_UINT    = 23,
  1235.     VT_VOID    = 24,
  1236.     VT_HRESULT    = 25,
  1237.     VT_PTR    = 26,
  1238.     VT_SAFEARRAY    = 27,
  1239.     VT_CARRAY    = 28,
  1240.     VT_USERDEFINED    = 29,
  1241.     VT_LPSTR    = 30,
  1242.     VT_LPWSTR    = 31,
  1243.     VT_RECORD    = 36,
  1244.     VT_FILETIME    = 64,
  1245.     VT_BLOB    = 65,
  1246.     VT_STREAM    = 66,
  1247.     VT_STORAGE    = 67,
  1248.     VT_STREAMED_OBJECT    = 68,
  1249.     VT_STORED_OBJECT    = 69,
  1250.     VT_BLOB_OBJECT    = 70,
  1251.     VT_CF    = 71,
  1252.     VT_CLSID    = 72,
  1253.     VT_BSTR_BLOB    = 0xfff,
  1254.     VT_VECTOR    = 0x1000,
  1255.     VT_ARRAY    = 0x2000,
  1256.     VT_BYREF    = 0x4000,
  1257.     VT_RESERVED    = 0x8000,
  1258.     VT_ILLEGAL    = 0xffff,
  1259.     VT_ILLEGALMASKED    = 0xfff,
  1260.     VT_TYPEMASK    = 0xfff
  1261.     };
  1262. typedef ULONG PROPID;
  1263.  
  1264. #ifndef SID_IDENTIFIER_AUTHORITY_DEFINED
  1265. #define SID_IDENTIFIER_AUTHORITY_DEFINED
  1266. typedef struct  _SID_IDENTIFIER_AUTHORITY
  1267.     {
  1268.     UCHAR Value[ 6 ];
  1269.     }    SID_IDENTIFIER_AUTHORITY;
  1270.  
  1271. typedef struct _SID_IDENTIFIER_AUTHORITY __RPC_FAR *PSID_IDENTIFIER_AUTHORITY;
  1272.  
  1273. #endif
  1274. #ifndef SID_DEFINED
  1275. #define SID_DEFINED
  1276. typedef struct  _SID
  1277.     {
  1278.     UCHAR Revision;
  1279.     UCHAR SubAuthorityCount;
  1280.     SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
  1281.     /* [size_is] */ ULONG SubAuthority[ 1 ];
  1282.     }    SID;
  1283.  
  1284. typedef struct _SID __RPC_FAR *PISID;
  1285.  
  1286. #endif
  1287. typedef GUID APPID;
  1288.  
  1289. typedef struct  tagCSPLATFORM
  1290.     {
  1291.     DWORD dwPlatformId;
  1292.     DWORD dwVersionHi;
  1293.     DWORD dwVersionLo;
  1294.     DWORD dwProcessorArch;
  1295.     }    CSPLATFORM;
  1296.  
  1297. typedef struct  tagQUERYCONTEXT
  1298.     {
  1299.     DWORD dwContext;
  1300.     CSPLATFORM Platform;
  1301.     LCID Locale;
  1302.     DWORD dwVersionHi;
  1303.     DWORD dwVersionLo;
  1304.     }    QUERYCONTEXT;
  1305.  
  1306. typedef /* [v1_enum] */ 
  1307. enum tagTYSPEC
  1308.     {    TYSPEC_CLSID    = 0,
  1309.     TYSPEC_FILEEXT    = TYSPEC_CLSID + 1,
  1310.     TYSPEC_MIMETYPE    = TYSPEC_FILEEXT + 1,
  1311.     TYSPEC_PROGID    = TYSPEC_MIMETYPE + 1,
  1312.     TYSPEC_IID    = TYSPEC_PROGID + 1,
  1313.     TYSPEC_TYPELIB    = TYSPEC_IID + 1,
  1314.     TYSPEC_FILENAME    = TYSPEC_TYPELIB + 1,
  1315.     TYSPEC_JAVACLASS    = TYSPEC_FILENAME + 1,
  1316.     TYSPEC_PACKAGENAME    = TYSPEC_JAVACLASS + 1
  1317.     }    TYSPEC;
  1318.  
  1319. typedef /* [public] */ struct  __MIDL___MIDL_itf_wtypes_0001_0001
  1320.     {
  1321.     DWORD tyspec;
  1322.     /* [switch_is] */ /* [switch_type] */ union __MIDL___MIDL_itf_wtypes_0001_0003
  1323.         {
  1324.         /* [case()] */ CLSID clsid;
  1325.         /* [case()] */ IID iid;
  1326.         /* [case()] */ GUID typelibID;
  1327.         /* [case()] */ LPOLESTR pFileExt;
  1328.         /* [case()] */ LPOLESTR pMimeType;
  1329.         /* [case()] */ LPOLESTR pProgId;
  1330.         /* [case()] */ LPOLESTR pFileName;
  1331.         /* [case()] */ LPOLESTR pJavaClassName;
  1332.         /* [case()] */ LPOLESTR pPackageName;
  1333.         }    tagged_union;
  1334.     }    uCLSSPEC;
  1335.  
  1336. typedef struct  _PUBLISHEDAPPINFO
  1337.     {
  1338.     LPOLESTR pwszFileExtension;
  1339.     LPOLESTR pwszDisplayName;
  1340.     LPOLESTR pwszPackagePath;
  1341.     }    PUBLISHEDAPPINFO;
  1342.  
  1343. typedef /* [v1_enum] */ 
  1344. enum tagAPPINFOTYPE
  1345.     {    APPINFO_PUBLISHED    = 1,
  1346.     APPINFO_SHELLNEW    = APPINFO_PUBLISHED + 1,
  1347.     APPINFO_INSERTABLE    = APPINFO_SHELLNEW + 1
  1348.     }    APPINFOTYPE;
  1349.  
  1350. #define    ACTFLG_RunLocally    ( 1 )
  1351.  
  1352. #define    ACTFLG_RunOnce    ( 2 )
  1353.  
  1354. #define    ACTFLG_SystemWide    ( 4 )
  1355.  
  1356. #define    ACTFLG_Published    ( 8 )
  1357.  
  1358. #define    ACTFLG_Assigned    ( 16 )
  1359.  
  1360. #define    ACTFLG_UserInstall    ( 32 )
  1361.  
  1362. typedef /* [v1_enum] */ 
  1363. enum _CLASSPATHTYPE
  1364.     {    ExeNamePath    = 0,
  1365.     DllNamePath    = ExeNamePath + 1,
  1366.     TlbNamePath    = DllNamePath + 1,
  1367.     CabFilePath    = TlbNamePath + 1,
  1368.     InfFilePath    = CabFilePath + 1,
  1369.     DrwFilePath    = InfFilePath + 1,
  1370.     SetupNamePath    = DrwFilePath + 1
  1371.     }    CLASSPATHTYPE;
  1372.  
  1373. typedef struct  tagAPPDETAIL
  1374.     {
  1375.     GUID AppID;
  1376.     DWORD cClasses;
  1377.     /* [size_is] */ CLSID __RPC_FAR *prgClsIdList;
  1378.     DWORD cTypeLibIds;
  1379.     /* [size_is] */ CLSID __RPC_FAR *prgTypeLibIdList;
  1380.     DWORD cServers;
  1381.     /* [size_is] */ LPOLESTR __RPC_FAR *prgServerNames;
  1382.     }    APPDETAIL;
  1383.  
  1384. typedef struct  tagPACKAGEDETAIL
  1385.     {
  1386.     CLASSPATHTYPE PathType;
  1387.     LPOLESTR pszPath;
  1388.     LPOLESTR pszIconPath;
  1389.     LPOLESTR pszSetupCommand;
  1390.     DWORD dwActFlags;
  1391.     LPOLESTR pszVendor;
  1392.     LPOLESTR pszPackageName;
  1393.     LPOLESTR pszProductName;
  1394.     DWORD dwContext;
  1395.     CSPLATFORM Platform;
  1396.     LCID Locale;
  1397.     DWORD dwVersionHi;
  1398.     DWORD dwVersionLo;
  1399.     ULONGLONG Usn;
  1400.     DWORD cApps;
  1401.     /* [size_is] */ APPDETAIL __RPC_FAR *pAppDetail;
  1402.     }    PACKAGEDETAIL;
  1403.  
  1404. typedef struct  tagPACKAGEINFO
  1405.     {
  1406.     LPOLESTR pszClassIconPath;
  1407.     CLSID __RPC_FAR *pTreatAsClsid;
  1408.     DWORD cPackages;
  1409.     /* [size_is] */ PACKAGEDETAIL __RPC_FAR *pPackageDetail;
  1410.     }    PACKAGEINFO;
  1411.  
  1412.  
  1413.  
  1414. extern RPC_IF_HANDLE __MIDL_itf_wtypes_0001_v0_0_c_ifspec;
  1415. extern RPC_IF_HANDLE __MIDL_itf_wtypes_0001_v0_0_s_ifspec;
  1416.  
  1417. /* Additional Prototypes for ALL interfaces */
  1418.  
  1419. /* end of Additional Prototypes */
  1420.  
  1421. #ifdef __cplusplus
  1422. }
  1423. #endif
  1424.  
  1425. #endif
  1426.