| cpp_quote("/**") | 
 | cpp_quote(" * This file is part of the mingw-w64 runtime package.") | 
 | cpp_quote(" * No warranty is given; refer to the file DISCLAIMER within this package.") | 
 | cpp_quote(" */") | 
 | cpp_quote("") | 
 | cpp_quote("#include <winapifamily.h>") | 
 |  | 
 | #ifndef DO_NO_IMPORTS | 
 | import "objidl.idl"; | 
 | #endif | 
 |  | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
 |  | 
 | interface ICreateTypeInfo; | 
 | interface ICreateTypeInfo2; | 
 | interface ICreateTypeLib; | 
 | interface ICreateTypeLib2; | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)") | 
 | interface IDispatch; | 
 | interface IEnumVARIANT; | 
 | interface ITypeComp; | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
 | interface ITypeInfo; | 
 | interface ITypeInfo2; | 
 | interface ITypeLib; | 
 | interface ITypeLib2; | 
 | interface ITypeChangeEvents; | 
 | interface IErrorInfo; | 
 | interface ICreateErrorInfo; | 
 | interface ISupportErrorInfo; | 
 | interface ITypeFactory; | 
 | interface ITypeMarshal; | 
 | interface IRecordInfo; | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)") | 
 | [version (1.0), pointer_default (unique)] | 
 | interface IOleAutomationTypes { | 
 |   typedef CY CURRENCY; | 
 |   typedef struct tagSAFEARRAYBOUND { | 
 |     ULONG cElements; | 
 |     LONG lLbound; | 
 |   } SAFEARRAYBOUND,*LPSAFEARRAYBOUND; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [unique] struct _wireVARIANT *wireVARIANT; | 
 |   typedef [unique] struct _wireBRECORD *wireBRECORD; | 
 | cpp_quote("") | 
 |   typedef struct _wireSAFEARR_BSTR { | 
 |     ULONG Size; | 
 |     [size_is (Size), ref] wireBSTR *aBstr; | 
 |   } SAFEARR_BSTR; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct _wireSAFEARR_UNKNOWN { | 
 |     ULONG Size; | 
 |     [size_is (Size), ref] IUnknown **apUnknown; | 
 |   } SAFEARR_UNKNOWN; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct _wireSAFEARR_DISPATCH { | 
 |     ULONG Size; | 
 |     [size_is (Size), ref] IDispatch **apDispatch; | 
 |   } SAFEARR_DISPATCH; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct _wireSAFEARR_VARIANT { | 
 |     ULONG Size; | 
 |     [size_is (Size), ref] wireVARIANT *aVariant; | 
 |   } SAFEARR_VARIANT; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct _wireSAFEARR_BRECORD { | 
 |     ULONG Size; | 
 |     [size_is (Size), ref] wireBRECORD *aRecord; | 
 |   } SAFEARR_BRECORD; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct _wireSAFEARR_HAVEIID { | 
 |     ULONG Size; | 
 |     [size_is (Size), ref] IUnknown **apUnknown; | 
 |     IID iid; | 
 |   } SAFEARR_HAVEIID; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagSF_TYPE { | 
 |     SF_ERROR = VT_ERROR, | 
 |     SF_I1 = VT_I1, | 
 |     SF_I2 = VT_I2, | 
 |     SF_I4 = VT_I4, | 
 |     SF_I8 = VT_I8, | 
 |     SF_BSTR = VT_BSTR, | 
 |     SF_UNKNOWN = VT_UNKNOWN, | 
 |     SF_DISPATCH = VT_DISPATCH, | 
 |     SF_VARIANT = VT_VARIANT, | 
 |     SF_RECORD = VT_RECORD, | 
 |     SF_HAVEIID = VT_UNKNOWN | VT_RESERVED | 
 |   } SF_TYPE; | 
 |  | 
 | cpp_quote("") | 
 |   typedef union _wireSAFEARRAY_UNION switch (ULONG sfType) u { | 
 |     case SF_BSTR: SAFEARR_BSTR BstrStr; | 
 |     case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr; | 
 |     case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr; | 
 |     case SF_VARIANT: SAFEARR_VARIANT VariantStr; | 
 |     case SF_RECORD: SAFEARR_BRECORD RecordStr; | 
 |     case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr; | 
 |     case SF_I1: BYTE_SIZEDARR ByteStr; | 
 |     case SF_I2: WORD_SIZEDARR WordStr; | 
 |     case SF_I4: DWORD_SIZEDARR LongStr; | 
 |     case SF_I8: HYPER_SIZEDARR HyperStr; | 
 |   } SAFEARRAYUNION; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [unique] struct _wireSAFEARRAY { | 
 |     USHORT cDims; | 
 |     USHORT fFeatures; | 
 |     ULONG cbElements; | 
 |     ULONG cLocks; | 
 |     SAFEARRAYUNION uArrayStructs; | 
 |     [size_is (cDims)] SAFEARRAYBOUND rgsabound[]; | 
 |   } *wireSAFEARRAY; | 
 |   typedef [unique] wireSAFEARRAY *wirePSAFEARRAY; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagSAFEARRAY { | 
 |     USHORT cDims; | 
 |     USHORT fFeatures; | 
 |     ULONG cbElements; | 
 |     ULONG cLocks; | 
 |     PVOID pvData; | 
 |     SAFEARRAYBOUND rgsabound[]; | 
 |   } SAFEARRAY; | 
 |   typedef [wire_marshal (wirePSAFEARRAY)] SAFEARRAY *LPSAFEARRAY; | 
 |  | 
 | cpp_quote("") | 
 |   const USHORT FADF_AUTO = 0x0001; | 
 |   const USHORT FADF_STATIC = 0x0002; | 
 |   const USHORT FADF_EMBEDDED = 0x0004; | 
 |   const USHORT FADF_FIXEDSIZE = 0x0010; | 
 |   const USHORT FADF_RECORD = 0x0020; | 
 |   const USHORT FADF_HAVEIID = 0x0040; | 
 |   const USHORT FADF_HAVEVARTYPE= 0x0080; | 
 |   const USHORT FADF_BSTR = 0x0100; | 
 |   const USHORT FADF_UNKNOWN = 0x0200; | 
 |   const USHORT FADF_DISPATCH = 0x0400; | 
 |   const USHORT FADF_VARIANT = 0x0800; | 
 |   const USHORT FADF_RESERVED = 0xf008; | 
 |  | 
 | cpp_quote("") | 
 | cpp_quote("/* Kludge for 3.0 release to disable new default-behavior.") | 
 | cpp_quote(" * For now we define _FORCENAMELESSUNION.  For 4.0 this define") | 
 | cpp_quote(" * will be removed. */") | 
 | cpp_quote("#ifndef _FORCENAMELESSUNION") | 
 | cpp_quote("#define _FORCENAMELESSUNION 1") | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if (__STDC__ && !defined(__cplusplus) && !defined(_FORCENAMELESSUNION)) || defined(NONAMELESSUNION) || (defined (_MSC_VER) && !defined(_MSC_EXTENSIONS) && !defined(_FORCENAMELESSUNION))") | 
 | cpp_quote("#define __VARIANT_NAME_1 n1") | 
 | cpp_quote("#define __VARIANT_NAME_2 n2") | 
 | cpp_quote("#define __VARIANT_NAME_3 n3") | 
 | cpp_quote("#define __VARIANT_NAME_4 brecVal") | 
 | cpp_quote("#else") | 
 | cpp_quote("#define __tagVARIANT") | 
 | cpp_quote("#define __VARIANT_NAME_1") | 
 | cpp_quote("#define __VARIANT_NAME_2") | 
 | cpp_quote("#define __VARIANT_NAME_3") | 
 | cpp_quote("#define __tagBRECORD") | 
 | cpp_quote("#define __VARIANT_NAME_4") | 
 | cpp_quote("#endif") | 
 |  | 
 | cpp_quote("") | 
 |   typedef [wire_marshal (wireVARIANT)] struct tagVARIANT VARIANT; | 
 |  | 
 | cpp_quote("") | 
 |   struct tagVARIANT { | 
 |     union { | 
 |       struct __tagVARIANT { | 
 | 	VARTYPE vt; | 
 | 	WORD wReserved1; | 
 | 	WORD wReserved2; | 
 | 	WORD wReserved3; | 
 | 	union { | 
 | 	  LONGLONG llVal; | 
 | 	  LONG lVal; | 
 | 	  BYTE bVal; | 
 | 	  SHORT iVal; | 
 | 	  FLOAT fltVal; | 
 | 	  DOUBLE dblVal; | 
 | 	  VARIANT_BOOL boolVal; | 
 | 	  /* Removed due conflict with bool and gcc's inablity to express a macro expanding to a comment. | 
 | 	  _VARIANT_BOOL bool; */ | 
 | 	  SCODE scode; | 
 | 	  CY cyVal; | 
 | 	  DATE date; | 
 | 	  BSTR bstrVal; | 
 | 	  IUnknown *punkVal; | 
 | 	  IDispatch *pdispVal; | 
 | 	  SAFEARRAY *parray; | 
 | 	  BYTE *pbVal; | 
 | 	  SHORT *piVal; | 
 | 	  LONG *plVal; | 
 | 	  LONGLONG *pllVal; | 
 | 	  FLOAT *pfltVal; | 
 | 	  DOUBLE *pdblVal; | 
 | 	  VARIANT_BOOL *pboolVal; | 
 | 	  /* Removed due conflict with bool and gcc's inablity to express a macro expanding to a comment. | 
 | 	  _VARIANT_BOOL *pbool; */ | 
 | 	  SCODE *pscode; | 
 | 	  CY *pcyVal; | 
 | 	  DATE *pdate; | 
 | 	  BSTR *pbstrVal; | 
 | 	  IUnknown **ppunkVal; | 
 | 	  IDispatch **ppdispVal; | 
 | 	  SAFEARRAY **pparray; | 
 | 	  VARIANT *pvarVal; | 
 | 	  PVOID byref; | 
 | 	  CHAR cVal; | 
 | 	  USHORT uiVal; | 
 | 	  ULONG ulVal; | 
 | 	  ULONGLONG ullVal; | 
 | 	  INT intVal; | 
 | 	  UINT uintVal; | 
 | 	  DECIMAL *pdecVal; | 
 | 	  CHAR *pcVal; | 
 | 	  USHORT *puiVal; | 
 | 	  ULONG *pulVal; | 
 | 	  ULONGLONG *pullVal; | 
 | 	  INT *pintVal; | 
 | 	  UINT *puintVal; | 
 | 	  struct __tagBRECORD { | 
 | 	    PVOID pvRecord; | 
 | 	    IRecordInfo *pRecInfo; | 
 | 	  } __VARIANT_NAME_4; | 
 | 	} __VARIANT_NAME_3; | 
 |       } __VARIANT_NAME_2; | 
 |       DECIMAL decVal; | 
 |     } __VARIANT_NAME_1; | 
 |   }; | 
 |  | 
 | cpp_quote("") | 
 |   typedef VARIANT *LPVARIANT; | 
 |   typedef VARIANT VARIANTARG; | 
 |   typedef VARIANT *LPVARIANTARG; | 
 |   cpp_quote("#if 0") | 
 |   typedef const VARIANT *REFVARIANT; | 
 |   cpp_quote("#else") | 
 |   cpp_quote("") | 
 |   cpp_quote("#ifndef _REFVARIANT_DEFINED") | 
 |   cpp_quote("#define _REFVARIANT_DEFINED") | 
 |   cpp_quote("#ifdef __cplusplus") | 
 |   cpp_quote("#define REFVARIANT const VARIANT &") | 
 |   cpp_quote("#else") | 
 |   cpp_quote("#define REFVARIANT const VARIANT * __MIDL_CONST") | 
 |   cpp_quote("#endif") | 
 |   cpp_quote("#endif") | 
 |   cpp_quote("#endif") | 
 |  | 
 | cpp_quote("") | 
 |   struct _wireBRECORD { | 
 |     ULONG fFlags; | 
 |     ULONG clSize; | 
 |     IRecordInfo *pRecInfo; | 
 |     [size_is (clSize)] byte *pRecord; | 
 |   }; | 
 |  | 
 | cpp_quote("") | 
 |   struct _wireVARIANT { | 
 |     DWORD clSize; | 
 |     DWORD rpcReserved; | 
 |     USHORT vt; | 
 |     USHORT wReserved1; | 
 |     USHORT wReserved2; | 
 |     USHORT wReserved3; | 
 |     [switch_type (ULONG), switch_is (vt)] union { | 
 |       [case (VT_I8)] LONGLONG llVal; | 
 |       [case (VT_I4)] LONG lVal; | 
 |       [case (VT_UI1)] BYTE bVal; | 
 |       [case (VT_I2)] SHORT iVal; | 
 |       [case (VT_R4)] FLOAT fltVal; | 
 |       [case (VT_R8)] DOUBLE dblVal; | 
 |       [case (VT_BOOL)] VARIANT_BOOL boolVal; | 
 |       [case (VT_ERROR)] SCODE scode; | 
 |       [case (VT_CY)] CY cyVal; | 
 |       [case (VT_DATE)] DATE date; | 
 |       [case (VT_BSTR)] wireBSTR bstrVal; | 
 |       [case (VT_UNKNOWN)] IUnknown *punkVal; | 
 |       [case (VT_DISPATCH)] IDispatch *pdispVal; | 
 |       [case (VT_ARRAY)] wirePSAFEARRAY parray; | 
 |       [case (VT_RECORD, VT_RECORD|VT_BYREF)] | 
 |       wireBRECORD brecVal; | 
 |       [case (VT_UI1|VT_BYREF)] | 
 |       BYTE *pbVal; | 
 |       [case (VT_I2|VT_BYREF)] | 
 |       SHORT *piVal; | 
 |       [case (VT_I4|VT_BYREF)] | 
 |       LONG *plVal; | 
 |       [case (VT_I8|VT_BYREF)] | 
 |       LONGLONG *pllVal; | 
 |       [case (VT_R4|VT_BYREF)] | 
 |       FLOAT *pfltVal; | 
 |       [case (VT_R8|VT_BYREF)] | 
 |       DOUBLE *pdblVal; | 
 |       [case (VT_BOOL|VT_BYREF)] | 
 |       VARIANT_BOOL *pboolVal; | 
 |       [case (VT_ERROR|VT_BYREF)] | 
 |       SCODE *pscode; | 
 |       [case (VT_CY|VT_BYREF)] | 
 |       CY *pcyVal; | 
 |       [case (VT_DATE|VT_BYREF)] | 
 |       DATE *pdate; | 
 |       [case (VT_BSTR|VT_BYREF)] | 
 |       wireBSTR *pbstrVal; | 
 |       [case (VT_UNKNOWN|VT_BYREF)] | 
 |       IUnknown **ppunkVal; | 
 |       [case (VT_DISPATCH|VT_BYREF)] | 
 |       IDispatch **ppdispVal; | 
 |       [case (VT_ARRAY|VT_BYREF)] | 
 |       wirePSAFEARRAY *pparray; | 
 |       [case (VT_VARIANT|VT_BYREF)] | 
 |       wireVARIANT *pvarVal; | 
 |       [case (VT_I1)] CHAR cVal; | 
 |       [case (VT_UI2)] USHORT uiVal; | 
 |       [case (VT_UI4)] ULONG ulVal; | 
 |       [case (VT_UI8)] ULONGLONG ullVal; | 
 |       [case (VT_INT)] INT intVal; | 
 |       [case (VT_UINT)] UINT uintVal; | 
 |       [case (VT_DECIMAL)] DECIMAL decVal; | 
 |       [case (VT_BYREF|VT_DECIMAL)] | 
 |       DECIMAL *pdecVal; | 
 |       [case (VT_BYREF|VT_I1)] | 
 |       CHAR *pcVal; | 
 |       [case (VT_BYREF|VT_UI2)] | 
 |       USHORT *puiVal; | 
 |       [case (VT_BYREF|VT_UI4)] | 
 |       ULONG *pulVal; | 
 |       [case (VT_BYREF|VT_UI8)] | 
 |       ULONGLONG *pullVal; | 
 |       [case (VT_BYREF|VT_INT)] | 
 |       INT *pintVal; | 
 |       [case (VT_BYREF|VT_UINT)] | 
 |       UINT *puintVal; | 
 |       [case (VT_EMPTY)]; | 
 |       [case (VT_NULL)]; | 
 |     }; | 
 |   }; | 
 |  | 
 | cpp_quote("") | 
 |   typedef LONG DISPID; | 
 |   typedef DISPID MEMBERID; | 
 |   typedef DWORD HREFTYPE; | 
 |   typedef [v1_enum] enum tagTYPEKIND { | 
 |     TKIND_ENUM = 0, | 
 |     TKIND_RECORD, | 
 |     TKIND_MODULE, | 
 |     TKIND_INTERFACE, | 
 |     TKIND_DISPATCH, | 
 |     TKIND_COCLASS, | 
 |     TKIND_ALIAS, | 
 |     TKIND_UNION, | 
 |     TKIND_MAX | 
 |   } TYPEKIND; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagTYPEDESC { | 
 |     [switch_type (VARTYPE), switch_is (vt)] union { | 
 |       [case (VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC *lptdesc; | 
 |       [case (VT_CARRAY)] struct tagARRAYDESC *lpadesc; | 
 |       [case (VT_USERDEFINED)] HREFTYPE hreftype; | 
 |       [default]; | 
 |     }; | 
 |     VARTYPE vt; | 
 |   } TYPEDESC; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagARRAYDESC { | 
 |     TYPEDESC tdescElem; | 
 |     USHORT cDims; | 
 |     [size_is (cDims)] SAFEARRAYBOUND rgbounds[]; | 
 |   } ARRAYDESC; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagPARAMDESCEX { | 
 |     ULONG cBytes; | 
 |     VARIANTARG varDefaultValue; | 
 |   } PARAMDESCEX,*LPPARAMDESCEX; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagPARAMDESC { | 
 |     LPPARAMDESCEX pparamdescex; | 
 |     USHORT wParamFlags; | 
 |   } PARAMDESC,*LPPARAMDESC; | 
 |  | 
 | cpp_quote("") | 
 |   const USHORT PARAMFLAG_NONE = 0x00; | 
 |   const USHORT PARAMFLAG_FIN = 0x01; | 
 |   const USHORT PARAMFLAG_FOUT = 0x02; | 
 |   const USHORT PARAMFLAG_FLCID = 0x04; | 
 |   const USHORT PARAMFLAG_FRETVAL = 0x08; | 
 |   const USHORT PARAMFLAG_FOPT = 0x10; | 
 |   const USHORT PARAMFLAG_FHASDEFAULT = 0x20; | 
 |   const USHORT PARAMFLAG_FHASCUSTDATA = 0x40; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagIDLDESC { | 
 |     ULONG_PTR dwReserved; | 
 |     USHORT wIDLFlags; | 
 |   } IDLDESC,*LPIDLDESC; | 
 |  | 
 | cpp_quote("") | 
 |   const USHORT IDLFLAG_NONE = PARAMFLAG_NONE; | 
 |   const USHORT IDLFLAG_FIN = PARAMFLAG_FIN; | 
 |   const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT; | 
 |   const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID; | 
 |   const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL; | 
 |   cpp_quote("") | 
 |   cpp_quote("#if 0") | 
 |   typedef struct tagELEMDESC { | 
 |     TYPEDESC tdesc; | 
 |     PARAMDESC paramdesc; | 
 |   } ELEMDESC; | 
 |   cpp_quote("#else") | 
 |   cpp_quote("") | 
 |   cpp_quote("  typedef struct tagELEMDESC {") | 
 |   cpp_quote("    TYPEDESC tdesc;") | 
 |   cpp_quote("    __C89_NAMELESS union {") | 
 |   cpp_quote("      IDLDESC idldesc;") | 
 |   cpp_quote("      PARAMDESC paramdesc;") | 
 |   cpp_quote("    } DUMMYUNIONNAME;") | 
 |   cpp_quote("  } ELEMDESC,*LPELEMDESC;") | 
 |   cpp_quote("#endif") | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagTYPEATTR { | 
 |     GUID guid; | 
 |     LCID lcid; | 
 |     DWORD dwReserved; | 
 |     MEMBERID memidConstructor; | 
 |     MEMBERID memidDestructor; | 
 |     LPOLESTR lpstrSchema; | 
 |     ULONG cbSizeInstance; | 
 |     TYPEKIND typekind; | 
 |     WORD cFuncs; | 
 |     WORD cVars; | 
 |     WORD cImplTypes; | 
 |     WORD cbSizeVft; | 
 |     WORD cbAlignment; | 
 |     WORD wTypeFlags; | 
 |     WORD wMajorVerNum; | 
 |     WORD wMinorVerNum; | 
 |     TYPEDESC tdescAlias; | 
 |     IDLDESC idldescType; | 
 |   } TYPEATTR,*LPTYPEATTR; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagDISPPARAMS { | 
 |     [size_is (cArgs)] VARIANTARG *rgvarg; | 
 |     [size_is (cNamedArgs)] DISPID *rgdispidNamedArgs; | 
 |     UINT cArgs; | 
 |     UINT cNamedArgs; | 
 |   } DISPPARAMS; | 
 |   cpp_quote("") | 
 |   cpp_quote("#if 0") | 
 |   typedef struct tagEXCEPINFO { | 
 |     WORD wCode; | 
 |     WORD wReserved; | 
 |     BSTR bstrSource; | 
 |     BSTR bstrDescription; | 
 |     BSTR bstrHelpFile; | 
 |     DWORD dwHelpContext; | 
 |     ULONG_PTR pvReserved; | 
 |     ULONG_PTR pfnDeferredFillIn; | 
 |     SCODE scode; | 
 |   } EXCEPINFO; | 
 |   cpp_quote("#else") | 
 |   cpp_quote("  typedef struct tagEXCEPINFO {") | 
 |   cpp_quote("    WORD wCode;") | 
 |   cpp_quote("    WORD wReserved;") | 
 |   cpp_quote("    BSTR bstrSource;") | 
 |   cpp_quote("    BSTR bstrDescription;") | 
 |   cpp_quote("    BSTR bstrHelpFile;") | 
 |   cpp_quote("    DWORD dwHelpContext;") | 
 |   cpp_quote("    PVOID pvReserved;") | 
 |   cpp_quote("    HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);") | 
 |   cpp_quote("    SCODE scode;") | 
 |   cpp_quote("  } EXCEPINFO, *LPEXCEPINFO;") | 
 |   cpp_quote("#endif") | 
 |  | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagCALLCONV { | 
 |     CC_FASTCALL = 0, | 
 |     CC_CDECL = 1, | 
 |     CC_MSCPASCAL, | 
 |     CC_PASCAL = CC_MSCPASCAL, | 
 |     CC_MACPASCAL, | 
 |     CC_STDCALL, | 
 |     CC_FPFASTCALL, | 
 |     CC_SYSCALL, | 
 |     CC_MPWCDECL, | 
 |     CC_MPWPASCAL, | 
 |     CC_MAX | 
 |   } CALLCONV; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagFUNCKIND { | 
 |     FUNC_VIRTUAL, | 
 |     FUNC_PUREVIRTUAL, | 
 |     FUNC_NONVIRTUAL, | 
 |     FUNC_STATIC, | 
 |     FUNC_DISPATCH | 
 |   } FUNCKIND; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagINVOKEKIND { | 
 |     INVOKE_FUNC = 1, | 
 |     INVOKE_PROPERTYGET = 2, | 
 |     INVOKE_PROPERTYPUT = 4, | 
 |     INVOKE_PROPERTYPUTREF = 8 | 
 |   } INVOKEKIND; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagFUNCDESC { | 
 |     MEMBERID memid; | 
 |     [size_is (cScodes)] SCODE *lprgscode; | 
 |     [size_is (cParams)] ELEMDESC *lprgelemdescParam; | 
 |     FUNCKIND funckind; | 
 |     INVOKEKIND invkind; | 
 |     CALLCONV callconv; | 
 |     SHORT cParams; | 
 |     SHORT cParamsOpt; | 
 |     SHORT oVft; | 
 |     SHORT cScodes; | 
 |     ELEMDESC elemdescFunc; | 
 |     WORD wFuncFlags; | 
 |   } FUNCDESC,*LPFUNCDESC; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagVARKIND { | 
 |     VAR_PERINSTANCE, | 
 |     VAR_STATIC, | 
 |     VAR_CONST, | 
 |     VAR_DISPATCH | 
 |   } VARKIND; | 
 |  | 
 | cpp_quote("") | 
 |   const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1; | 
 |   const USHORT IMPLTYPEFLAG_FSOURCE = 0x2; | 
 |   const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4; | 
 |   const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagVARDESC { | 
 |     MEMBERID memid; | 
 |     LPOLESTR lpstrSchema; | 
 |     [switch_type (VARKIND), switch_is (varkind)] union { | 
 |       [case (VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst; | 
 |       [case (VAR_CONST)] VARIANT *lpvarValue; | 
 |     }; | 
 |     ELEMDESC elemdescVar; | 
 |     WORD wVarFlags; | 
 |     VARKIND varkind; | 
 |   } VARDESC,*LPVARDESC; | 
 |  | 
 | cpp_quote("") | 
 |  typedef enum tagTYPEFLAGS { | 
 |     TYPEFLAG_FAPPOBJECT = 0x01, | 
 |     TYPEFLAG_FCANCREATE = 0x02, | 
 |     TYPEFLAG_FLICENSED = 0x04, | 
 |     TYPEFLAG_FPREDECLID = 0x08, | 
 |     TYPEFLAG_FHIDDEN = 0x10, | 
 |     TYPEFLAG_FCONTROL = 0x20, | 
 |     TYPEFLAG_FDUAL = 0x40, | 
 |     TYPEFLAG_FNONEXTENSIBLE = 0x80, | 
 |     TYPEFLAG_FOLEAUTOMATION = 0x100, | 
 |     TYPEFLAG_FRESTRICTED = 0x200, | 
 |     TYPEFLAG_FAGGREGATABLE = 0x400, | 
 |     TYPEFLAG_FREPLACEABLE = 0x800, | 
 |     TYPEFLAG_FDISPATCHABLE = 0x1000, | 
 |     TYPEFLAG_FREVERSEBIND = 0x2000, | 
 |     TYPEFLAG_FPROXY = 0x4000 | 
 |   } TYPEFLAGS; | 
 |  | 
 | cpp_quote("") | 
 |   typedef enum tagFUNCFLAGS { | 
 |     FUNCFLAG_FRESTRICTED = 0x1, | 
 |     FUNCFLAG_FSOURCE = 0x2, | 
 |     FUNCFLAG_FBINDABLE = 0x4, | 
 |     FUNCFLAG_FREQUESTEDIT = 0x8, | 
 |     FUNCFLAG_FDISPLAYBIND = 0x10, | 
 |     FUNCFLAG_FDEFAULTBIND = 0x20, | 
 |     FUNCFLAG_FHIDDEN = 0x40, | 
 |     FUNCFLAG_FUSESGETLASTERROR = 0x80, | 
 |     FUNCFLAG_FDEFAULTCOLLELEM = 0x100, | 
 |     FUNCFLAG_FUIDEFAULT = 0x200, | 
 |     FUNCFLAG_FNONBROWSABLE = 0x400, | 
 |     FUNCFLAG_FREPLACEABLE = 0x800, | 
 |     FUNCFLAG_FIMMEDIATEBIND = 0x1000 | 
 |   } FUNCFLAGS; | 
 |  | 
 | cpp_quote("") | 
 |   typedef enum tagVARFLAGS { | 
 |     VARFLAG_FREADONLY = 0x1, | 
 |     VARFLAG_FSOURCE = 0x2, | 
 |     VARFLAG_FBINDABLE = 0x4, | 
 |     VARFLAG_FREQUESTEDIT = 0x8, | 
 |     VARFLAG_FDISPLAYBIND = 0x10, | 
 |     VARFLAG_FDEFAULTBIND = 0x20, | 
 |     VARFLAG_FHIDDEN = 0x40, | 
 |     VARFLAG_FRESTRICTED = 0x80, | 
 |     VARFLAG_FDEFAULTCOLLELEM = 0x100, | 
 |     VARFLAG_FUIDEFAULT = 0x200, | 
 |     VARFLAG_FNONBROWSABLE = 0x400, | 
 |     VARFLAG_FREPLACEABLE = 0x800, | 
 |     VARFLAG_FIMMEDIATEBIND = 0x1000 | 
 |   } VARFLAGS; | 
 |  | 
 | cpp_quote("") | 
 |   typedef [wire_marshal (DWORD)] struct tagCLEANLOCALSTORAGE { | 
 |     IUnknown *pInterface; | 
 |     PVOID pStorage; | 
 |     DWORD flags; | 
 |   } CLEANLOCALSTORAGE; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagCUSTDATAITEM { | 
 |     GUID guid; | 
 |     VARIANTARG varValue; | 
 |   } CUSTDATAITEM,*LPCUSTDATAITEM; | 
 |  | 
 | cpp_quote("") | 
 |   typedef struct tagCUSTDATA { | 
 |     DWORD cCustData; | 
 |     [size_is (cCustData)] LPCUSTDATAITEM prgCustData; | 
 |   } CUSTDATA,*LPCUSTDATA; | 
 | } | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
 | [object, uuid (00020405-0000-0000-C000-000000000046), pointer_default (unique), local] | 
 | interface ICreateTypeInfo: IUnknown { | 
 |   typedef [unique] ICreateTypeInfo *LPCREATETYPEINFO; | 
 | cpp_quote("") | 
 |   HRESULT SetGuid ([in] REFGUID guid); | 
 |   HRESULT SetTypeFlags ([in] UINT uTypeFlags); | 
 |   HRESULT SetDocString ([in] LPOLESTR pStrDoc); | 
 |   HRESULT SetHelpContext ([in] DWORD dwHelpContext); | 
 |   HRESULT SetVersion ([in] WORD wMajorVerNum,[in] WORD wMinorVerNum); | 
 |   HRESULT AddRefTypeInfo ([in] ITypeInfo *pTInfo,[in] HREFTYPE *phRefType); | 
 |   HRESULT AddFuncDesc ([in] UINT index,[in] FUNCDESC *pFuncDesc); | 
 |   HRESULT AddImplType ([in] UINT index,[in] HREFTYPE hRefType); | 
 |   HRESULT SetImplTypeFlags ([in] UINT index,[in] INT implTypeFlags); | 
 |   HRESULT SetAlignment ([in] WORD cbAlignment); | 
 |   HRESULT SetSchema ([in] LPOLESTR pStrSchema); | 
 |   HRESULT AddVarDesc ([in] UINT index,[in] VARDESC *pVarDesc); | 
 |   HRESULT SetFuncAndParamNames ([in] UINT index,[in, size_is ((UINT) cNames)] LPOLESTR *rgszNames,[in] UINT cNames); | 
 |   HRESULT SetVarName ([in] UINT index,[in] LPOLESTR szName); | 
 |   HRESULT SetTypeDescAlias ([in] TYPEDESC *pTDescAlias); | 
 |   HRESULT DefineFuncAsDllEntry ([in] UINT index,[in] LPOLESTR szDllName,[in] LPOLESTR szProcName); | 
 |   HRESULT SetFuncDocString ([in] UINT index,[in] LPOLESTR szDocString); | 
 |   HRESULT SetVarDocString ([in] UINT index,[in] LPOLESTR szDocString); | 
 |   HRESULT SetFuncHelpContext ([in] UINT index,[in] DWORD dwHelpContext); | 
 |   HRESULT SetVarHelpContext ([in] UINT index,[in] DWORD dwHelpContext); | 
 |   HRESULT SetMops ([in] UINT index,[in] BSTR bstrMops); | 
 |   HRESULT SetTypeIdldesc ([in] IDLDESC *pIdlDesc); | 
 |   HRESULT LayOut (void); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (0002040e-0000-0000-C000-000000000046), pointer_default (unique), local] | 
 | interface ICreateTypeInfo2: ICreateTypeInfo { | 
 |   typedef [unique] ICreateTypeInfo2 *LPCREATETYPEINFO2; | 
 | cpp_quote("") | 
 |   HRESULT DeleteFuncDesc ([in] UINT index); | 
 |   HRESULT DeleteFuncDescByMemId ([in] MEMBERID memid,[in] INVOKEKIND invKind); | 
 |   HRESULT DeleteVarDesc ([in] UINT index); | 
 |   HRESULT DeleteVarDescByMemId ([in] MEMBERID memid); | 
 |   HRESULT DeleteImplType ([in] UINT index); | 
 |   HRESULT SetCustData ([in] REFGUID guid,[in] VARIANT *pVarVal); | 
 |   HRESULT SetFuncCustData ([in] UINT index,[in] REFGUID guid,[in] VARIANT *pVarVal); | 
 |   HRESULT SetParamCustData ([in] UINT indexFunc,[in] UINT indexParam,[in] REFGUID guid,[in] VARIANT *pVarVal); | 
 |   HRESULT SetVarCustData ([in] UINT index,[in] REFGUID guid,[in] VARIANT *pVarVal); | 
 |   HRESULT SetImplTypeCustData ([in] UINT index,[in] REFGUID guid,[in] VARIANT *pVarVal); | 
 |   HRESULT SetHelpStringContext ([in] ULONG dwHelpStringContext); | 
 |   HRESULT SetFuncHelpStringContext ([in] UINT index,[in] ULONG dwHelpStringContext); | 
 |   HRESULT SetVarHelpStringContext ([in] UINT index,[in] ULONG dwHelpStringContext); | 
 |   HRESULT Invalidate (void); | 
 |   HRESULT SetName ([in] LPOLESTR szName); | 
 | } | 
 | cpp_quote("") | 
 | [object, uuid (00020406-0000-0000-C000-000000000046), pointer_default (unique), local] | 
 | interface ICreateTypeLib : IUnknown { | 
 |   typedef [unique] ICreateTypeLib *LPCREATETYPELIB; | 
 | cpp_quote("") | 
 |   HRESULT CreateTypeInfo ([in] LPOLESTR szName,[in] TYPEKIND tkind,[out] ICreateTypeInfo **ppCTInfo); | 
 |   HRESULT SetName ([in] LPOLESTR szName); | 
 |   HRESULT SetVersion ([in] WORD wMajorVerNum,[in] WORD wMinorVerNum); | 
 |   HRESULT SetGuid ([in] REFGUID guid); | 
 |   HRESULT SetDocString ([in] LPOLESTR szDoc); | 
 |   HRESULT SetHelpFileName ([in] LPOLESTR szHelpFileName); | 
 |   HRESULT SetHelpContext ([in] DWORD dwHelpContext); | 
 |   HRESULT SetLcid ([in] LCID lcid); | 
 |   HRESULT SetLibFlags ([in] UINT uLibFlags); | 
 |   HRESULT SaveAllChanges (void); | 
 | } | 
 | cpp_quote("") | 
 | [object, uuid (0002040f-0000-0000-C000-000000000046), pointer_default (unique), local] | 
 | interface ICreateTypeLib2 : ICreateTypeLib { | 
 |   typedef [unique] ICreateTypeLib2 *LPCREATETYPELIB2; | 
 |   HRESULT DeleteTypeInfo ([in] LPOLESTR szName); | 
 |   HRESULT SetCustData ([in] REFGUID guid,[in] VARIANT *pVarVal); | 
 |   HRESULT SetHelpStringContext ([in] ULONG dwHelpStringContext); | 
 |   HRESULT SetHelpStringDll ([in] LPOLESTR szFileName); | 
 | } | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)") | 
 | [object, uuid (00020400-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface IDispatch : IUnknown { | 
 |   typedef [unique] IDispatch *LPDISPATCH; | 
 | cpp_quote("") | 
 |   HRESULT GetTypeInfoCount ([out] UINT *pctinfo); | 
 |   HRESULT GetTypeInfo ([in] UINT iTInfo,[in] LCID lcid,[out] ITypeInfo **ppTInfo); | 
 |   HRESULT GetIDsOfNames ([in] REFIID riid,[in, size_is (cNames)] LPOLESTR *rgszNames,[in, range (0, 16384)] UINT cNames,[in] LCID lcid,[out, size_is (cNames)] DISPID *rgDispId); | 
 |   [local] HRESULT Invoke ([in] DISPID dispIdMember,[in] REFIID riid,[in] LCID lcid,[in] WORD wFlags,[in, out] DISPPARAMS *pDispParams,[out] VARIANT *pVarResult,[out] EXCEPINFO *pExcepInfo,[out] UINT *puArgErr); | 
 |   [call_as (Invoke)] HRESULT RemoteInvoke ([in] DISPID dispIdMember,[in] REFIID riid,[in] LCID lcid,[in] DWORD dwFlags,[in] DISPPARAMS *pDispParams,[out] VARIANT *pVarResult,[out] EXCEPINFO *pExcepInfo,[out] UINT *pArgErr,[in] UINT cVarRef,[in, size_is (cVarRef)] UINT *rgVarRefIdx,[in, out, size_is (cVarRef)] VARIANTARG *rgVarRef); | 
 |   cpp_quote("") | 
 |   const DISPID DISPID_UNKNOWN = -1; | 
 |   const DISPID DISPID_VALUE = 0; | 
 |   const DISPID DISPID_PROPERTYPUT = -3; | 
 |   const DISPID DISPID_NEWENUM = -4; | 
 |   const DISPID DISPID_EVALUATE = -5; | 
 |   const DISPID DISPID_CONSTRUCTOR = -6; | 
 |   const DISPID DISPID_DESTRUCTOR = -7; | 
 |   const DISPID DISPID_COLLECT = -8; | 
 |   cpp_quote("") | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (00020404-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface IEnumVARIANT : IUnknown { | 
 |   typedef [unique] IEnumVARIANT *LPENUMVARIANT; | 
 | cpp_quote("") | 
 |   [local] HRESULT Next ([in] ULONG celt,[out, size_is (celt), length_is (*pCeltFetched)] VARIANT *rgVar,[out] ULONG *pCeltFetched); | 
 |   [call_as (Next)] HRESULT RemoteNext ([in] ULONG celt,[out, size_is (celt), length_is (*pCeltFetched)] VARIANT *rgVar,[out] ULONG *pCeltFetched); | 
 |   HRESULT Skip ([in] ULONG celt); | 
 |   HRESULT Reset (); | 
 |   HRESULT Clone ([out] IEnumVARIANT **ppEnum); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (00020403-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface ITypeComp : IUnknown { | 
 |   typedef [unique] ITypeComp *LPTYPECOMP; | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagDESCKIND { | 
 |     DESCKIND_NONE = 0, | 
 |     DESCKIND_FUNCDESC, | 
 |     DESCKIND_VARDESC, | 
 |     DESCKIND_TYPECOMP, | 
 |     DESCKIND_IMPLICITAPPOBJ, | 
 |     DESCKIND_MAX | 
 |   } DESCKIND; | 
 | cpp_quote("") | 
 |   typedef union tagBINDPTR { | 
 |     FUNCDESC *lpfuncdesc; | 
 |     VARDESC *lpvardesc; | 
 |     ITypeComp *lptcomp; | 
 |   } BINDPTR,*LPBINDPTR; | 
 | cpp_quote("") | 
 |   [local] HRESULT Bind ([in] LPOLESTR szName,[in] ULONG lHashVal,[in] WORD wFlags,[out] ITypeInfo **ppTInfo,[out] DESCKIND *pDescKind,[out] BINDPTR *pBindPtr); | 
 |   [call_as (Bind)] HRESULT RemoteBind ([in] LPOLESTR szName,[in] ULONG lHashVal,[in] WORD wFlags,[out] ITypeInfo **ppTInfo,[out] DESCKIND *pDescKind,[out] LPFUNCDESC *ppFuncDesc,[out] LPVARDESC *ppVarDesc,[out] ITypeComp **ppTypeComp,[out] CLEANLOCALSTORAGE *pDummy); | 
 |   [local] HRESULT BindType ([in] LPOLESTR szName,[in] ULONG lHashVal,[out] ITypeInfo **ppTInfo,[out] ITypeComp **ppTComp); | 
 |   [call_as (BindType)] HRESULT RemoteBindType ([in] LPOLESTR szName,[in] ULONG lHashVal,[out] ITypeInfo **ppTInfo); | 
 | } | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
 | [object, uuid (00020401-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface ITypeInfo : IUnknown { | 
 |   typedef [unique] ITypeInfo *LPTYPEINFO; | 
 | cpp_quote("") | 
 |   [local] HRESULT GetTypeAttr ([out] TYPEATTR **ppTypeAttr); | 
 |   [call_as (GetTypeAttr)] HRESULT RemoteGetTypeAttr ([out] LPTYPEATTR *ppTypeAttr,[out] CLEANLOCALSTORAGE *pDummy); | 
 |   HRESULT GetTypeComp ([out] ITypeComp **ppTComp); | 
 |   [local] HRESULT GetFuncDesc ([in] UINT index,[out] FUNCDESC **ppFuncDesc); | 
 |   [call_as (GetFuncDesc)] HRESULT RemoteGetFuncDesc ([in] UINT index,[out] LPFUNCDESC *ppFuncDesc,[out] CLEANLOCALSTORAGE *pDummy); | 
 |   [local] HRESULT GetVarDesc ([in] UINT index,[out] VARDESC **ppVarDesc); | 
 |   [call_as (GetVarDesc)] HRESULT RemoteGetVarDesc ([in] UINT index,[out] LPVARDESC *ppVarDesc,[out] CLEANLOCALSTORAGE *pDummy); | 
 |   [local] HRESULT GetNames ([in] MEMBERID memid,[out, size_is (cMaxNames), length_is (*pcNames)] BSTR *rgBstrNames,[in] UINT cMaxNames,[out] UINT *pcNames); | 
 |   [call_as (GetNames)] HRESULT RemoteGetNames ([in] MEMBERID memid,[out, size_is (cMaxNames), length_is (*pcNames)] BSTR *rgBstrNames,[in] UINT cMaxNames,[out] UINT *pcNames); | 
 |   HRESULT GetRefTypeOfImplType ([in] UINT index,[out] HREFTYPE *pRefType); | 
 |   HRESULT GetImplTypeFlags ([in] UINT index,[out] INT *pImplTypeFlags); | 
 |   [local] HRESULT GetIDsOfNames ([in, size_is (cNames)] LPOLESTR *rgszNames,[in] UINT cNames,[out, size_is (cNames)] MEMBERID *pMemId); | 
 |   [call_as (GetIDsOfNames)] HRESULT LocalGetIDsOfNames (void); | 
 |   [local] HRESULT Invoke ([in] PVOID pvInstance,[in] MEMBERID memid,[in] WORD wFlags,[in, out] DISPPARAMS *pDispParams,[out] VARIANT *pVarResult,[out] EXCEPINFO *pExcepInfo,[out] UINT *puArgErr); | 
 |   [call_as (Invoke)] HRESULT LocalInvoke (void); | 
 |   [local] HRESULT GetDocumentation ([in] MEMBERID memid,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile); | 
 |   [call_as (GetDocumentation)] HRESULT RemoteGetDocumentation ([in] MEMBERID memid,[in] DWORD refPtrFlags,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile); | 
 |   [local] | 
 |   HRESULT GetDllEntry ([in] MEMBERID memid,[in] INVOKEKIND invKind,[out] BSTR *pBstrDllName,[out] BSTR *pBstrName,[out] WORD *pwOrdinal); | 
 |   [call_as (GetDllEntry)] | 
 |   HRESULT RemoteGetDllEntry ([in] MEMBERID memid,[in] INVOKEKIND invKind,[in] DWORD refPtrFlags,[out] BSTR *pBstrDllName,[out] BSTR *pBstrName,[out] WORD *pwOrdinal); | 
 |   HRESULT GetRefTypeInfo ([in] HREFTYPE hRefType,[out] ITypeInfo **ppTInfo); | 
 |   [local] HRESULT AddressOfMember ([in] MEMBERID memid,[in] INVOKEKIND invKind,[out] PVOID *ppv); | 
 |   [call_as (AddressOfMember)] HRESULT LocalAddressOfMember (void); | 
 |   [local] HRESULT CreateInstance ([in] IUnknown *pUnkOuter,[in] REFIID riid,[out, iid_is (riid)] PVOID *ppvObj); | 
 |   [call_as (CreateInstance)] HRESULT RemoteCreateInstance ([in] REFIID riid,[out, iid_is (riid)] IUnknown **ppvObj); | 
 |   HRESULT GetMops ([in] MEMBERID memid,[out] BSTR *pBstrMops); | 
 |   [local] HRESULT GetContainingTypeLib ([out] ITypeLib **ppTLib,[out] UINT *pIndex); | 
 |   [call_as (GetContainingTypeLib)] HRESULT RemoteGetContainingTypeLib ([out] ITypeLib **ppTLib,[out] UINT *pIndex); | 
 |   [local] void ReleaseTypeAttr ([in] TYPEATTR *pTypeAttr); | 
 |   [call_as (ReleaseTypeAttr)] HRESULT LocalReleaseTypeAttr (void); | 
 |   [local] void ReleaseFuncDesc ([in] FUNCDESC *pFuncDesc); | 
 |   [call_as (ReleaseFuncDesc)] HRESULT LocalReleaseFuncDesc (void); | 
 |   [local] void ReleaseVarDesc ([in] VARDESC *pVarDesc); | 
 |   [call_as (ReleaseVarDesc)] HRESULT LocalReleaseVarDesc (void); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (00020412-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface ITypeInfo2 : ITypeInfo { | 
 |   typedef [unique] ITypeInfo2 *LPTYPEINFO2; | 
 | cpp_quote("") | 
 |   HRESULT GetTypeKind ([out] TYPEKIND *pTypeKind); | 
 |   HRESULT GetTypeFlags ([out] ULONG *pTypeFlags); | 
 |   HRESULT GetFuncIndexOfMemId ([in] MEMBERID memid,[in] INVOKEKIND invKind,[out] UINT *pFuncIndex); | 
 |   HRESULT GetVarIndexOfMemId ([in] MEMBERID memid,[out] UINT *pVarIndex); | 
 |   HRESULT GetCustData ([in] REFGUID guid,[out] VARIANT *pVarVal); | 
 |   HRESULT GetFuncCustData ([in] UINT index,[in] REFGUID guid,[out] VARIANT *pVarVal); | 
 |   HRESULT GetParamCustData ([in] UINT indexFunc,[in] UINT indexParam,[in] REFGUID guid,[out] VARIANT *pVarVal); | 
 |   HRESULT GetVarCustData ([in] UINT index,[in] REFGUID guid,[out] VARIANT *pVarVal); | 
 |   HRESULT GetImplTypeCustData ([in] UINT index,[in] REFGUID guid,[out] VARIANT *pVarVal); | 
 |   [local] HRESULT GetDocumentation2 ([in] MEMBERID memid,[in] LCID lcid,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll); | 
 |   [call_as (GetDocumentation2)] HRESULT RemoteGetDocumentation2 ([in] MEMBERID memid,[in] LCID lcid,[in] DWORD refPtrFlags,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll); | 
 |   HRESULT GetAllCustData ([out] CUSTDATA *pCustData); | 
 |   HRESULT GetAllFuncCustData ([in] UINT index,[out] CUSTDATA *pCustData); | 
 |   HRESULT GetAllParamCustData ([in] UINT indexFunc,[in] UINT indexParam,[out] CUSTDATA *pCustData); | 
 |   HRESULT GetAllVarCustData ([in] UINT index,[out] CUSTDATA *pCustData); | 
 |   HRESULT GetAllImplTypeCustData ([in] UINT index,[out] CUSTDATA *pCustData); | 
 | } | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)") | 
 | [object, uuid (00020402-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface ITypeLib : IUnknown { | 
 |   typedef [v1_enum] enum tagSYSKIND { | 
 |     SYS_WIN16 = 0, | 
 |     SYS_WIN32, | 
 |     SYS_MAC, | 
 |     SYS_WIN64 | 
 |   } SYSKIND; | 
 | cpp_quote("") | 
 |   typedef [v1_enum] enum tagLIBFLAGS { | 
 |     LIBFLAG_FRESTRICTED = 0x01, | 
 |     LIBFLAG_FCONTROL = 0x02, | 
 |     LIBFLAG_FHIDDEN = 0x04, | 
 |     LIBFLAG_FHASDISKIMAGE = 0x08 | 
 |   } LIBFLAGS; | 
 | cpp_quote("") | 
 |   typedef [unique] ITypeLib *LPTYPELIB; | 
 | cpp_quote("") | 
 |   typedef struct tagTLIBATTR { | 
 |     GUID guid; | 
 |     LCID lcid; | 
 |     SYSKIND syskind; | 
 |     WORD wMajorVerNum; | 
 |     WORD wMinorVerNum; | 
 |     WORD wLibFlags; | 
 |   } TLIBATTR,*LPTLIBATTR; | 
 | cpp_quote("") | 
 |   [local] UINT GetTypeInfoCount (void); | 
 |   [call_as (GetTypeInfoCount)] HRESULT RemoteGetTypeInfoCount ([out] UINT *pcTInfo); | 
 |   HRESULT GetTypeInfo ([in] UINT index,[out] ITypeInfo **ppTInfo); | 
 |   HRESULT GetTypeInfoType ([in] UINT index,[out] TYPEKIND *pTKind); | 
 |   HRESULT GetTypeInfoOfGuid ([in] REFGUID guid,[out] ITypeInfo **ppTinfo); | 
 |   [local] HRESULT GetLibAttr ([out] TLIBATTR **ppTLibAttr); | 
 |   [call_as (GetLibAttr)] HRESULT RemoteGetLibAttr ([out] LPTLIBATTR *ppTLibAttr,[out] CLEANLOCALSTORAGE *pDummy); | 
 |   HRESULT GetTypeComp ([out] ITypeComp **ppTComp); | 
 |   [local] HRESULT GetDocumentation ([in] INT index,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile); | 
 |   [call_as (GetDocumentation)] HRESULT RemoteGetDocumentation ([in] INT index,[in] DWORD refPtrFlags,[out] BSTR *pBstrName,[out] BSTR *pBstrDocString,[out] DWORD *pdwHelpContext,[out] BSTR *pBstrHelpFile); | 
 |   [local] HRESULT IsName ([in, out] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out] BOOL *pfName); | 
 |   [call_as (IsName)] HRESULT RemoteIsName ([in] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out] BOOL *pfName,[out] BSTR *pBstrLibName); | 
 |   [local] HRESULT FindName ([in, out] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out, size_is (*pcFound), length_is (*pcFound)] ITypeInfo **ppTInfo,[out, size_is (*pcFound), length_is (*pcFound)] MEMBERID *rgMemId,[in, out] USHORT *pcFound); | 
 |   [call_as (FindName)] HRESULT RemoteFindName ([in] LPOLESTR szNameBuf,[in] ULONG lHashVal,[out, size_is (*pcFound), length_is (*pcFound)] ITypeInfo **ppTInfo,[out, size_is (*pcFound), length_is (*pcFound)] MEMBERID *rgMemId,[in, out] USHORT *pcFound,[out] BSTR *pBstrLibName); | 
 |   [local] void ReleaseTLibAttr ([in] TLIBATTR *pTLibAttr); | 
 |   [call_as (ReleaseTLibAttr)] HRESULT LocalReleaseTLibAttr (void); | 
 | } | 
 | cpp_quote("#endif") | 
 | cpp_quote("") | 
 | cpp_quote("#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)") | 
 | [object, uuid (00020411-0000-0000-C000-000000000046), pointer_default (unique)] | 
 | interface ITypeLib2 : ITypeLib { | 
 |   typedef [unique] ITypeLib2 *LPTYPELIB2; | 
 | cpp_quote("") | 
 |   HRESULT GetCustData ([in] REFGUID guid,[out] VARIANT *pVarVal); | 
 |   [local] HRESULT GetLibStatistics ([out] ULONG *pcUniqueNames,[out] ULONG *pcchUniqueNames); | 
 |   [call_as (GetLibStatistics)] HRESULT RemoteGetLibStatistics ([out] ULONG *pcUniqueNames,[out] ULONG *pcchUniqueNames); | 
 |   [local] HRESULT GetDocumentation2 ([in] INT index,[in] LCID lcid,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll); | 
 |   [call_as (GetDocumentation2)] HRESULT RemoteGetDocumentation2 ([in] INT index,[in] LCID lcid,[in] DWORD refPtrFlags,[out] BSTR *pbstrHelpString,[out] DWORD *pdwHelpStringContext,[out] BSTR *pbstrHelpStringDll); | 
 |   HRESULT GetAllCustData ([out] CUSTDATA *pCustData); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (00020410-0000-0000-C000-000000000046), pointer_default (unique), local] | 
 | interface ITypeChangeEvents: IUnknown { | 
 |   typedef [unique] ITypeChangeEvents *LPTYPECHANGEEVENTS; | 
 | cpp_quote("") | 
 |   typedef enum tagCHANGEKIND { | 
 |     CHANGEKIND_ADDMEMBER, | 
 |     CHANGEKIND_DELETEMEMBER, | 
 |     CHANGEKIND_SETNAMES, | 
 |     CHANGEKIND_SETDOCUMENTATION, | 
 |     CHANGEKIND_GENERAL, | 
 |     CHANGEKIND_INVALIDATE, | 
 |     CHANGEKIND_CHANGEFAILED, | 
 |     CHANGEKIND_MAX | 
 |   } CHANGEKIND; | 
 | cpp_quote("") | 
 |   HRESULT RequestTypeChange ([in] CHANGEKIND changeKind,[in] ITypeInfo *pTInfoBefore,[in] LPOLESTR pStrName,[out] INT *pfCancel); | 
 |   HRESULT AfterTypeChange ([in] CHANGEKIND changeKind,[in] ITypeInfo *pTInfoAfter,[in] LPOLESTR pStrName); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (1cf2b120-547d-101b-8e65-08002b2bd119), pointer_default (unique)] | 
 | interface IErrorInfo: IUnknown { | 
 |   typedef [unique] IErrorInfo *LPERRORINFO; | 
 | cpp_quote("") | 
 |   HRESULT GetGUID ([out] GUID *pGUID); | 
 |   HRESULT GetSource ([out] BSTR *pBstrSource); | 
 |   HRESULT GetDescription ([out] BSTR *pBstrDescription); | 
 |   HRESULT GetHelpFile ([out] BSTR *pBstrHelpFile); | 
 |   HRESULT GetHelpContext ([out] DWORD *pdwHelpContext); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (22f03340-547d-101b-8e65-08002b2bd119), pointer_default (unique)] | 
 | interface ICreateErrorInfo: IUnknown { | 
 |   typedef [unique] ICreateErrorInfo *LPCREATEERRORINFO; | 
 | cpp_quote("") | 
 |   HRESULT SetGUID ([in] REFGUID rguid); | 
 |   HRESULT SetSource ([in] LPOLESTR szSource); | 
 |   HRESULT SetDescription ([in] LPOLESTR szDescription); | 
 |   HRESULT SetHelpFile ([in] LPOLESTR szHelpFile); | 
 |   HRESULT SetHelpContext ([in] DWORD dwHelpContext); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (DF0B3D60-548f-101b-8e65-08002b2bd119), pointer_default (unique)] | 
 | interface ISupportErrorInfo: IUnknown { | 
 |   typedef [unique] ISupportErrorInfo *LPSUPPORTERRORINFO; | 
 | cpp_quote("") | 
 |   HRESULT InterfaceSupportsErrorInfo ([in] REFIID riid); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (0000002e-0000-0000-C000-000000000046)] | 
 | interface ITypeFactory : IUnknown { | 
 |   HRESULT CreateFromTypeInfo ([in] ITypeInfo *pTypeInfo,[in] REFIID riid,[out, iid_is (riid)] IUnknown **ppv); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [local, object, uuid (0000002d-0000-0000-C000-000000000046)] | 
 | interface ITypeMarshal : IUnknown { | 
 |   HRESULT Size ([in] PVOID pvType,[in] DWORD dwDestContext,[in] PVOID pvDestContext,[out] ULONG *pSize); | 
 |   HRESULT Marshal ([in] PVOID pvType,[in] DWORD dwDestContext,[in] PVOID pvDestContext,[in] ULONG cbBufferLength,[out] BYTE *pBuffer,[out] ULONG *pcbWritten); | 
 |   HRESULT Unmarshal ([out] PVOID pvType,[in] DWORD dwFlags,[in] ULONG cbBufferLength,[in] BYTE *pBuffer,[out] ULONG *pcbRead); | 
 |   HRESULT Free ([in] PVOID pvType); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [local, object, uuid (0000002f-0000-0000-C000-000000000046)] | 
 | interface IRecordInfo: IUnknown { | 
 |   typedef [unique] IRecordInfo *LPRECORDINFO; | 
 | cpp_quote("") | 
 |   HRESULT RecordInit ([out] PVOID pvNew); | 
 |   HRESULT RecordClear ([in] PVOID pvExisting); | 
 |   HRESULT RecordCopy ([in] PVOID pvExisting,[out] PVOID pvNew); | 
 |   HRESULT GetGuid ([out] GUID *pguid); | 
 |   HRESULT GetName ([out] BSTR *pbstrName); | 
 |   HRESULT GetSize ([out] ULONG *pcbSize); | 
 |   HRESULT GetTypeInfo ([out] ITypeInfo **ppTypeInfo); | 
 |   HRESULT GetField ([in] PVOID pvData,[in] LPCOLESTR szFieldName,[out] VARIANT *pvarField); | 
 |   HRESULT GetFieldNoCopy ([in] PVOID pvData,[in] LPCOLESTR szFieldName,[out] VARIANT *pvarField,[out] PVOID *ppvDataCArray); | 
 |   HRESULT PutField ([in] ULONG wFlags,[in, out] PVOID pvData,[in] LPCOLESTR szFieldName,[in] VARIANT *pvarField); | 
 |   HRESULT PutFieldNoCopy ([in] ULONG wFlags,[in, out] PVOID pvData,[in] LPCOLESTR szFieldName,[in] VARIANT *pvarField); | 
 |   HRESULT GetFieldNames ([in, out] ULONG *pcNames,[out, size_is (*pcNames), length_is (*pcNames)] BSTR *rgBstrNames); | 
 |   BOOL IsMatchingType ([in] IRecordInfo *pRecordInfo); | 
 |   PVOID RecordCreate (); | 
 |   HRESULT RecordCreateCopy ([in] PVOID pvSource,[out] PVOID *ppvDest); | 
 |   HRESULT RecordDestroy ([in] PVOID pvRecord); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (3127ca40-446e-11ce-8135-00aa004bb851), pointer_default (unique)] | 
 | interface IErrorLog : IUnknown { | 
 |   typedef IErrorLog *LPERRORLOG; | 
 | cpp_quote("") | 
 |   HRESULT AddError ([in] LPCOLESTR pszPropName,[in] EXCEPINFO *pExcepInfo); | 
 | } | 
 |  | 
 | cpp_quote("") | 
 | [object, uuid (55272a00-42cb-11ce-8135-00aa004bb851), pointer_default (unique)] | 
 | interface IPropertyBag : IUnknown { | 
 |   typedef IPropertyBag *LPPROPERTYBAG; | 
 | cpp_quote("") | 
 |   [local] HRESULT Read ([in] LPCOLESTR pszPropName,[in, out] VARIANT *pVar,[in, unique] IErrorLog *pErrorLog); | 
 |   [call_as (Read)] HRESULT RemoteRead ([in] LPCOLESTR pszPropName,[out] VARIANT *pVar,[in, unique] IErrorLog *pErrorLog,[in] DWORD varType,[in] IUnknown *pUnkObj); | 
 |   HRESULT Write ([in] LPCOLESTR pszPropName,[in] VARIANT *pVar); | 
 | } | 
 | cpp_quote("#endif") |