Annotation of mstools/ole20/h/i386/dispatch.h, revision 1.1

1.1     ! root        1: /*** 
        !             2: *dispatch.h - OLE Automation definitions.
        !             3: *
        !             4: *  Copyright (C) 1992-1993, Microsoft Corporation.  All Rights Reserved.
        !             5: *
        !             6: *Purpose:
        !             7: *  This file defines the Ole Automation interfaces and APIs.
        !             8: *
        !             9: *Implementation Notes:
        !            10: *  This file requires ole2.h
        !            11: *
        !            12: *****************************************************************************/
        !            13: 
        !            14: #ifndef _DISPATCH_H_
        !            15: #define _DISPATCH_H_
        !            16: 
        !            17: #include "variant.h"
        !            18: 
        !            19: #ifndef BEGIN_INTERFACE
        !            20: # define BEGIN_INTERFACE
        !            21: #endif
        !            22: 
        !            23: #if defined(NONAMELESSUNION) || (defined(_MAC) && !defined(__cplusplus) && !defined(_MSC_VER))
        !            24: # define UNION_NAME(X) X
        !            25: #else
        !            26: # define UNION_NAME(X)
        !            27: #endif
        !            28: 
        !            29: 
        !            30: DEFINE_OLEGUID(IID_IDispatch,          0x00020400L, 0, 0);
        !            31: DEFINE_OLEGUID(IID_IEnumVARIANT,       0x00020404L, 0, 0);
        !            32: DEFINE_OLEGUID(IID_ITypeInfo,          0x00020401L, 0, 0);
        !            33: DEFINE_OLEGUID(IID_ITypeLib,           0x00020402L, 0, 0);
        !            34: DEFINE_OLEGUID(IID_ITypeComp,          0x00020403L, 0, 0);
        !            35: DEFINE_OLEGUID(IID_ICreateTypeInfo,    0x00020405L, 0, 0);
        !            36: DEFINE_OLEGUID(IID_ICreateTypeLib,     0x00020406L, 0, 0);
        !            37: 
        !            38: #ifdef WIN32
        !            39: DEFINE_OLEGUID(IID_IDispatchW,         0x00020407L, 0, 0);
        !            40: DEFINE_OLEGUID(IID_ITypeInfoW,         0x00020408L, 0, 0);
        !            41: DEFINE_OLEGUID(IID_ITypeLibW,          0x00020409L, 0, 0);
        !            42: DEFINE_OLEGUID(IID_ITypeCompW,         0x00020410L, 0, 0);
        !            43: DEFINE_OLEGUID(IID_ICreateTypeInfoW,   0x00020411L, 0, 0);
        !            44: DEFINE_OLEGUID(IID_ICreateTypeLibW,    0x00020412L, 0, 0);
        !            45: #endif
        !            46: 
        !            47: 
        !            48: /* forward declarations */
        !            49: #ifdef __cplusplus
        !            50: 
        !            51:   interface IDispatch;
        !            52:   interface IEnumVARIANT;
        !            53:   interface ITypeInfo;
        !            54:   interface ITypeLib;
        !            55:   interface ITypeComp;
        !            56:   interface ICreateTypeInfo;
        !            57:   interface ICreateTypeLib;
        !            58:   
        !            59:   #ifdef WIN32
        !            60:   interface IDispatchW;
        !            61:   interface ITypeInfoW;
        !            62:   interface ITypeLibW;  
        !            63:   interface ITypeCompW;  
        !            64:   interface ICreateTypeInfoW;
        !            65:   interface ICreateTypeLibW;
        !            66:   #endif
        !            67: 
        !            68: #else
        !            69: 
        !            70:   typedef interface IDispatch IDispatch;
        !            71:   typedef interface IEnumVARIANT IEnumVARIANT;
        !            72:   typedef interface ITypeInfo ITypeInfo;
        !            73:   typedef interface ITypeLib ITypeLib;
        !            74:   typedef interface ITypeComp ITypeComp;
        !            75:   typedef interface ICreateTypeInfo ICreateTypeInfo;
        !            76:   typedef interface ICreateTypeLib ICreateTypeLib;
        !            77:   
        !            78:   #ifdef WIN32  
        !            79:   typedef interface IDispatchW IDispatchW;
        !            80:   typedef interface ITypeInfoW ITypeInfoW;
        !            81:   typedef interface ITypeLibW ITypeLibW;
        !            82:   typedef interface ITypeCompW ITypeCompW;
        !            83:   typedef interface ICreateTypeInfoW ICreateTypeInfoW;
        !            84:   typedef interface ICreateTypeLibW ICreateTypeLibW;
        !            85:   #endif
        !            86:          
        !            87: #endif
        !            88: 
        !            89: 
        !            90: /* IDispatch related error codes */
        !            91: 
        !            92: #define DISP_ERROR(X) MAKE_SCODE(SEVERITY_ERROR, FACILITY_DISPATCH, X)
        !            93: 
        !            94: #define DISP_E_UNKNOWNINTERFACE                DISP_ERROR(1)
        !            95: #define DISP_E_MEMBERNOTFOUND          DISP_ERROR(3)
        !            96: #define DISP_E_PARAMNOTFOUND           DISP_ERROR(4)
        !            97: #define DISP_E_TYPEMISMATCH            DISP_ERROR(5)
        !            98: #define DISP_E_UNKNOWNNAME             DISP_ERROR(6)
        !            99: #define DISP_E_NONAMEDARGS             DISP_ERROR(7)
        !           100: #define DISP_E_BADVARTYPE              DISP_ERROR(8)
        !           101: #define DISP_E_EXCEPTION               DISP_ERROR(9)
        !           102: #define DISP_E_OVERFLOW                        DISP_ERROR(10)
        !           103: #define DISP_E_BADINDEX                        DISP_ERROR(11)
        !           104: #define DISP_E_UNKNOWNLCID             DISP_ERROR(12)
        !           105: #define DISP_E_ARRAYISLOCKED           DISP_ERROR(13)
        !           106: #define DISP_E_BADPARAMCOUNT           DISP_ERROR(14)
        !           107: #define DISP_E_PARAMNOTOPTIONAL                DISP_ERROR(15)
        !           108: #define DISP_E_BADCALLEE               DISP_ERROR(16)
        !           109: #define DISP_E_NOTACOLLECTION          DISP_ERROR(17)
        !           110: 
        !           111: 
        !           112: #define TYPE_ERROR(X) MAKE_SCODE(SEVERITY_ERROR, FACILITY_DISPATCH, X)
        !           113: 
        !           114: #define TYPE_E_IOERROR                 TYPE_ERROR(   57)
        !           115: #define TYPE_E_COMPILEERROR            TYPE_ERROR(   90)
        !           116: #define TYPE_E_CANTCREATETMPFILE       TYPE_ERROR(  322)
        !           117: #define TYPE_E_ILLEGALINDEX            TYPE_ERROR(  341)
        !           118: #define TYPE_E_IDNOTFOUND              TYPE_ERROR( 1000)
        !           119: #define TYPE_E_BUFFERTOOSMALL          TYPE_ERROR(32790)
        !           120: #define TYPE_E_READONLY                TYPE_ERROR(32791)
        !           121: #define TYPE_E_INVDATAREAD             TYPE_ERROR(32792)
        !           122: #define TYPE_E_UNSUPFORMAT             TYPE_ERROR(32793)
        !           123: #define TYPE_E_ALREADYCONTAINSNAME     TYPE_ERROR(32794)
        !           124: #define TYPE_E_NOMATCHINGARITY         TYPE_ERROR(32795)
        !           125: #define TYPE_E_REGISTRYACCESS          TYPE_ERROR(32796)
        !           126: #define TYPE_E_LIBNOTREGISTERED        TYPE_ERROR(32797)
        !           127: #define TYPE_E_DUPLICATEDEFINITION     TYPE_ERROR(32798)
        !           128: #define TYPE_E_USAGE                   TYPE_ERROR(32799)
        !           129: #define TYPE_E_DESTNOTKNOWN            TYPE_ERROR(32800)
        !           130: #define TYPE_E_UNDEFINEDTYPE           TYPE_ERROR(32807)
        !           131: #define TYPE_E_QUALIFIEDNAMEDISALLOWED TYPE_ERROR(32808)
        !           132: #define TYPE_E_INVALIDSTATE            TYPE_ERROR(32809)
        !           133: #define TYPE_E_WRONGTYPEKIND           TYPE_ERROR(32810)
        !           134: #define TYPE_E_ELEMENTNOTFOUND         TYPE_ERROR(32811)
        !           135: #define TYPE_E_AMBIGUOUSNAME           TYPE_ERROR(32812)
        !           136: #define TYPE_E_TYPEMISMATCH            TYPE_ERROR(32813)
        !           137: #define TYPE_E_DLLFUNCTIONNOTFOUND     TYPE_ERROR(32814)
        !           138: #define TYPE_E_BADMODULEKIND           TYPE_ERROR(35005)
        !           139: #define TYPE_E_WRONGPLATFORM           TYPE_ERROR(35006)
        !           140: #define TYPE_E_ALREADYBEINGLAIDOUT     TYPE_ERROR(35007)
        !           141: #define TYPE_E_CANTLOADLIBRARY         TYPE_ERROR(40010)
        !           142: 
        !           143: 
        !           144: /* if not already picked up from olenls.h */
        !           145: #ifndef _LCID_DEFINED
        !           146: typedef unsigned long LCID;
        !           147: # define _LCID_DEFINED
        !           148: #endif
        !           149: 
        !           150: 
        !           151: /*---------------------------------------------------------------------*/
        !           152: /*                            BSTR API                                 */
        !           153: /*---------------------------------------------------------------------*/
        !           154: 
        !           155: #ifdef WIN32
        !           156: 
        !           157:   #ifdef UNICODE
        !           158: 
        !           159:     #define SysAllocString     SysAllocStringW
        !           160:     #define SysAllocStringLen  SysAllocStringLenW
        !           161:     #define SysReAllocString   SysReAllocStringW
        !           162:     #define SysReAllocStringLen        SysReAllocStringLenW
        !           163:     #define SysFreeString      SysFreeStringW
        !           164:     #define SysStringLen       SysStringLenW
        !           165:          
        !           166:   #else  /* ANSI */
        !           167:   
        !           168:     #define SysAllocString     SysAllocStringA
        !           169:     #define SysAllocStringLen  SysAllocStringLenA
        !           170:     #define SysReAllocString   SysReAllocStringA
        !           171:     #define SysReAllocStringLen        SysReAllocStringLenA
        !           172:     #define SysFreeString      SysFreeStringA
        !           173:     #define SysStringLen       SysStringLenA
        !           174:          
        !           175:   #endif
        !           176: 
        !           177:   /* ANSI BSTR API */
        !           178:   STDAPI_(BSTR) SysAllocStringA(char FAR*);
        !           179:   STDAPI_(int)  SysReAllocStringA(LPBSTR, char FAR*);
        !           180:   STDAPI_(BSTR) SysAllocStringLenA(char FAR*, unsigned int);
        !           181:   STDAPI_(int)  SysReAllocStringLenA(LPBSTR, char FAR*, unsigned int);
        !           182:   STDAPI_(void) SysFreeStringA(BSTR);
        !           183:   STDAPI_(unsigned int) SysStringLenA(BSTR);
        !           184: 
        !           185:   /* Unicode BSTR API */
        !           186:   STDAPI_(WBSTR) SysAllocStringW(LPWSTR);
        !           187:   STDAPI_(int)   SysReAllocStringW(LPWBSTR, LPWSTR);
        !           188:   STDAPI_(WBSTR) SysAllocStringLenW(LPWSTR, unsigned int);
        !           189:   STDAPI_(int)   SysReAllocStringLenW(LPWBSTR, LPWSTR, unsigned int);
        !           190:   STDAPI_(void)  SysFreeStringW(WBSTR);
        !           191:   STDAPI_(unsigned int)  SysStringLenW(WBSTR);
        !           192: 
        !           193:   STDAPI_(BSTR)  SysStringWtoA(WBSTR wbstr, unsigned int cp);
        !           194:   STDAPI_(WBSTR) SysStringAtoW(BSTR bstr, unsigned int cp);
        !           195: 
        !           196: #else /* WIN16 or _MAC */
        !           197: 
        !           198:   STDAPI_(BSTR) SysAllocString(char FAR*);
        !           199:   STDAPI_(int)  SysReAllocString(BSTR FAR*, char FAR*);
        !           200:   STDAPI_(BSTR) SysAllocStringLen(char FAR*, unsigned int);
        !           201:   STDAPI_(int)  SysReAllocStringLen(BSTR FAR*, char FAR*, unsigned int);
        !           202:   STDAPI_(void) SysFreeString(BSTR);  
        !           203:   STDAPI_(unsigned int) SysStringLen(BSTR);
        !           204:   
        !           205: #endif   
        !           206: 
        !           207: 
        !           208: /*---------------------------------------------------------------------*/
        !           209: /*                            Time API                                 */
        !           210: /*---------------------------------------------------------------------*/
        !           211: 
        !           212: STDAPI_(int)
        !           213: DosDateTimeToVariantTime(
        !           214:     unsigned short wDosDate,
        !           215:     unsigned short wDosTime,
        !           216:     double FAR* pvtime);
        !           217: 
        !           218: STDAPI_(int)
        !           219: VariantTimeToDosDateTime(
        !           220:     double vtime,
        !           221:     unsigned short FAR* pwDosDate,
        !           222:     unsigned short FAR* pwDosTime);
        !           223: 
        !           224: 
        !           225: /*---------------------------------------------------------------------*/
        !           226: /*                          SafeArray API                              */
        !           227: /*---------------------------------------------------------------------*/
        !           228: 
        !           229: STDAPI
        !           230: SafeArrayAllocDescriptor(unsigned int cDims, SAFEARRAY FAR* FAR* ppsaOut);
        !           231: 
        !           232: STDAPI SafeArrayAllocData(SAFEARRAY FAR* psa);
        !           233: 
        !           234: STDAPI_(SAFEARRAY FAR*)
        !           235: SafeArrayCreate(
        !           236:     VARTYPE vt,
        !           237:     unsigned int cDims,
        !           238:     SAFEARRAYBOUND FAR* rgsabound);
        !           239: 
        !           240: STDAPI SafeArrayDestroyDescriptor(SAFEARRAY FAR* psa);
        !           241: 
        !           242: STDAPI SafeArrayDestroyData(SAFEARRAY FAR* psa);
        !           243: 
        !           244: STDAPI SafeArrayDestroy(SAFEARRAY FAR* psa);
        !           245: 
        !           246: STDAPI SafeArrayRedim(SAFEARRAY FAR* psa, SAFEARRAYBOUND FAR* psaboundNew);
        !           247: 
        !           248: STDAPI_(unsigned int) SafeArrayGetDim(SAFEARRAY FAR* psa);
        !           249: 
        !           250: STDAPI_(unsigned int) SafeArrayGetElemsize(SAFEARRAY FAR* psa);
        !           251: 
        !           252: STDAPI
        !           253: SafeArrayGetUBound(SAFEARRAY FAR* psa, unsigned int nDim, long FAR* plUbound);
        !           254: 
        !           255: STDAPI
        !           256: SafeArrayGetLBound(SAFEARRAY FAR* psa, unsigned int nDim, long FAR* plLbound);
        !           257: 
        !           258: STDAPI SafeArrayLock(SAFEARRAY FAR* psa);
        !           259: 
        !           260: STDAPI SafeArrayUnlock(SAFEARRAY FAR* psa);
        !           261: 
        !           262: STDAPI SafeArrayAccessData(SAFEARRAY FAR* psa, void FAR* HUGEP* ppvData);
        !           263: 
        !           264: STDAPI SafeArrayUnaccessData(SAFEARRAY FAR* psa);
        !           265: 
        !           266: STDAPI
        !           267: SafeArrayGetElement(
        !           268:     SAFEARRAY FAR* psa,
        !           269:     long FAR* rgIndices,
        !           270:     void FAR* pv);
        !           271: 
        !           272: STDAPI
        !           273: SafeArrayPutElement(
        !           274:     SAFEARRAY FAR* psa,
        !           275:     long FAR* rgIndices,
        !           276:     void FAR* pv);
        !           277: 
        !           278: STDAPI
        !           279: SafeArrayCopy(
        !           280:     SAFEARRAY FAR* psa,
        !           281:     SAFEARRAY FAR* FAR* ppsaOut);
        !           282: 
        !           283: 
        !           284: /*---------------------------------------------------------------------*/
        !           285: /*                           VARIANT API                               */
        !           286: /*---------------------------------------------------------------------*/
        !           287: 
        !           288: STDAPI_(void)
        !           289: VariantInit(VARIANTARG FAR* pvarg);
        !           290: 
        !           291: STDAPI
        !           292: VariantClear(VARIANTARG FAR* pvarg);
        !           293: 
        !           294: STDAPI
        !           295: VariantCopy(
        !           296:     VARIANTARG FAR* pvargDest,
        !           297:     VARIANTARG FAR* pvargSrc);
        !           298: 
        !           299: STDAPI
        !           300: VariantCopyInd(
        !           301:     VARIANT FAR* pvarDest,
        !           302:     VARIANTARG FAR* pvargSrc);
        !           303: 
        !           304: STDAPI
        !           305: VariantChangeType(
        !           306:     VARIANTARG FAR* pvargDest,
        !           307:     VARIANTARG FAR* pvarSrc,
        !           308:     unsigned short wFlags,
        !           309:     VARTYPE vt);
        !           310: 
        !           311: #define VARIANT_NOVALUEPROP 1
        !           312: 
        !           313: 
        !           314: /*---------------------------------------------------------------------*/
        !           315: /*                     VARTYPE Coersion API                            */
        !           316: /*---------------------------------------------------------------------*/
        !           317: 
        !           318: /* Note: The routines that convert *from* a string are defined
        !           319:  * to take a char* rather than a BSTR because no allocation is
        !           320:  * required, and this makes the routines a bit more generic.
        !           321:  * They may of course still be passed a BSTR as the strIn param.
        !           322:  */
        !           323:    
        !           324: STDAPI VarI2FromI4(long lIn, short FAR* psOut);
        !           325: STDAPI VarI2FromR4(float fltIn, short FAR* psOut);
        !           326: STDAPI VarI2FromR8(double dblIn, short FAR* psOut);
        !           327: STDAPI VarI2FromCy(CY cyIn, short FAR* psOut);
        !           328: STDAPI VarI2FromDate(DATE dateIn, short FAR* psOut);
        !           329: STDAPI VarI2FromStr(char FAR* strIn, LCID lcid, short FAR* psOut);
        !           330: STDAPI VarI2FromDisp(IDispatch FAR* pdispIn, short FAR* psOut);
        !           331: STDAPI VarI2FromBool(VARIANT_BOOL boolIn, short FAR* psOut);
        !           332: 
        !           333: STDAPI VarI4FromI2(short sIn, long FAR* plOut);
        !           334: STDAPI VarI4FromR4(float fltIn, long FAR* plOut);
        !           335: STDAPI VarI4FromR8(double dblIn, long FAR* plOut);
        !           336: STDAPI VarI4FromCy(CY cyIn, long FAR* plOut);
        !           337: STDAPI VarI4FromDate(DATE dateIn, long FAR* plOut);
        !           338: STDAPI VarI4FromStr(char FAR* strIn, LCID lcid, long FAR* plOut);
        !           339: STDAPI VarI4FromDisp(IDispatch FAR* pdispIn, long FAR* plOut);
        !           340: STDAPI VarI4FromBool(VARIANT_BOOL boolIn, long FAR* plOut);
        !           341: 
        !           342: STDAPI VarR4FromI2(short sIn, float FAR* pfltOut);
        !           343: STDAPI VarR4FromI4(long lIn, float FAR* pfltOut);
        !           344: STDAPI VarR4FromR8(double dblIn, float FAR* pfltOut);
        !           345: STDAPI VarR4FromCy(CY cyIn, float FAR* pfltOut);
        !           346: STDAPI VarR4FromDate(DATE dateIn, float FAR* pfltOut);
        !           347: STDAPI VarR4FromStr(char FAR* strIn, LCID lcid, float FAR* pfltOut);
        !           348: STDAPI VarR4FromDisp(IDispatch FAR* pdispIn, float FAR* pfltOut);
        !           349: STDAPI VarR4FromBool(VARIANT_BOOL boolIn, float FAR* pfltOut);
        !           350: 
        !           351: STDAPI VarR8FromI2(short sIn, double FAR* pdblOut);
        !           352: STDAPI VarR8FromI4(long lIn, double FAR* pdblOut);
        !           353: STDAPI VarR8FromR4(float fltIn, double FAR* pdblOut);
        !           354: STDAPI VarR8FromCy(CY cyIn, double FAR* pdblOut);
        !           355: STDAPI VarR8FromDate(DATE dateIn, double FAR* pdblOut);
        !           356: STDAPI VarR8FromStr(char FAR* strIn, LCID lcid, double FAR* pdblOut);
        !           357: STDAPI VarR8FromDisp(IDispatch FAR* pdispIn, double FAR* pdblOut);
        !           358: STDAPI VarR8FromBool(VARIANT_BOOL boolIn, double FAR* pdblOut);
        !           359: 
        !           360: STDAPI VarDateFromI2(short sIn, DATE FAR* pdateOut);
        !           361: STDAPI VarDateFromI4(long lIn, DATE FAR* pdateOut);
        !           362: STDAPI VarDateFromR4(float fltIn, DATE FAR* pdateOut);
        !           363: STDAPI VarDateFromR8(double dblIn, DATE FAR* pdateOut);
        !           364: STDAPI VarDateFromCy(CY cyIn, DATE FAR* pdateOut);
        !           365: STDAPI VarDateFromStr(char FAR* strIn, LCID lcid, DATE FAR* pdateOut);
        !           366: STDAPI VarDateFromDisp(IDispatch FAR* pdispIn, DATE FAR* pdateOut);
        !           367: STDAPI VarDateFromBool(VARIANT_BOOL boolIn, DATE FAR* pdateOut);
        !           368: 
        !           369: STDAPI VarCyFromI2(short sIn, CY FAR* pcyOut);
        !           370: STDAPI VarCyFromI4(long lIn, CY FAR* pcyOut);
        !           371: STDAPI VarCyFromR4(float fltIn, CY FAR* pcyOut);
        !           372: STDAPI VarCyFromR8(double dblIn, CY FAR* pcyOut);
        !           373: STDAPI VarCyFromDate(DATE dateIn, CY FAR* pcyOut);
        !           374: STDAPI VarCyFromStr(char FAR* strIn, LCID lcid, CY FAR* pcyOut);
        !           375: STDAPI VarCyFromDisp(IDispatch FAR* pdispIn, CY FAR* pcyOut);
        !           376: STDAPI VarCyFromBool(VARIANT_BOOL boolIn, CY FAR* pcyOut);
        !           377: 
        !           378: STDAPI VarBstrFromI2(short iVal, LCID lcid, BSTR FAR* pbstrOut);
        !           379: STDAPI VarBstrFromI4(long lIn, LCID lcid, BSTR FAR* pbstrOut);
        !           380: STDAPI VarBstrFromR4(float fltIn, LCID lcid, BSTR FAR* pbstrOut);
        !           381: STDAPI VarBstrFromR8(double dblIn, LCID lcid, BSTR FAR* pbstrOut);
        !           382: STDAPI VarBstrFromCy(CY cyIn, LCID lcid, BSTR FAR* pbstrOut);
        !           383: STDAPI VarBstrFromDate(DATE dateIn, LCID lcid, BSTR FAR* pbstrOut);
        !           384: STDAPI VarBstrFromDisp(IDispatch FAR* pdispIn, LCID lcid, BSTR FAR* pbstrOut);
        !           385: STDAPI VarBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, BSTR FAR* pbstrOut);
        !           386: 
        !           387: STDAPI VarBoolFromI2(short sIn, VARIANT_BOOL FAR* pboolOut);
        !           388: STDAPI VarBoolFromI4(long lIn, VARIANT_BOOL FAR* pboolOut);
        !           389: STDAPI VarBoolFromR4(float fltIn, VARIANT_BOOL FAR* pboolOut);
        !           390: STDAPI VarBoolFromR8(double dblIn, VARIANT_BOOL FAR* pboolOut);
        !           391: STDAPI VarBoolFromDate(DATE dateIn, VARIANT_BOOL FAR* pboolOut);
        !           392: STDAPI VarBoolFromCy(CY cyIn, VARIANT_BOOL FAR* pboolOut);
        !           393: STDAPI VarBoolFromStr(char FAR* strIn, LCID lcid, VARIANT_BOOL FAR* pboolOut);
        !           394: STDAPI VarBoolFromDisp(IDispatch FAR* pdispIn, VARIANT_BOOL FAR* pboolOut);
        !           395: 
        !           396: #ifdef WIN32
        !           397: 
        !           398: STDAPI VarI2FromWStr(LPWSTR wstrIn, LCID lcid, short FAR* psOut);
        !           399: STDAPI VarI2FromDispW(IDispatchW FAR* pdispwIn, short FAR* psOut);
        !           400: 
        !           401: STDAPI VarI4FromWStr(LPWSTR wstrIn, LCID lcid, long FAR* plOut);
        !           402: STDAPI VarI4FromDispW(IDispatchW FAR* pdispwIn, long FAR* plOut);
        !           403: 
        !           404: STDAPI VarR4FromWStr(LPWSTR wstrIn, LCID lcid, float FAR* pfltOut);
        !           405: STDAPI VarR4FromDispW(IDispatchW FAR* pdispwIn, float FAR* pfltOut);
        !           406: 
        !           407: STDAPI VarR8FromWStr(LPWSTR wstrIn, LCID lcid, double FAR* pdblOut);
        !           408: STDAPI VarR8FromDispW(IDispatchW FAR* pdispwIn, double FAR* pdblOut);
        !           409: 
        !           410: STDAPI VarDateFromWStr(LPWSTR wstrIn, LCID lcid, DATE FAR* pdateOut);
        !           411: STDAPI VarDateFromDispW(IDispatchW FAR* pdispwIn, DATE FAR* pdateOut);
        !           412: 
        !           413: STDAPI VarCyFromWStr(LPWSTR wstrIn, LCID lcid, CY FAR* pcyOut);
        !           414: STDAPI VarCyFromDispW(IDispatchW FAR* pdispwIn, CY FAR* pcyOut);
        !           415: 
        !           416: STDAPI VarBstrFromDispW(IDispatchW FAR* pdispwIn, LCID lcid, BSTR FAR* pbstrOut);
        !           417: 
        !           418: STDAPI VarBoolFromWStr(LPWSTR wstrIn, LCID lcid, VARIANT_BOOL FAR* pboolOut);
        !           419: STDAPI VarBoolFromDispW(IDispatchW FAR* pdispwIn, VARIANT_BOOL FAR* pboolOut);
        !           420: 
        !           421: STDAPI VarWBstrFromI2(short sIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           422: STDAPI VarWBstrFromI4(long lIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           423: STDAPI VarWBstrFromR4(float fltIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           424: STDAPI VarWBstrFromR8(double dblIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           425: STDAPI VarWBstrFromDate(DATE dateIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           426: STDAPI VarWBstrFromCy(CY cyIn, LCID lcid, WBSTR FAR* pwbstr);
        !           427: STDAPI VarWBstrFromDisp(IDispatch FAR* pdispIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           428: STDAPI VarWBstrFromBool(VARIANT_BOOL boolIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           429: STDAPI VarWBstrFromDispW(IDispatchW FAR* pdispwIn, LCID lcid, WBSTR FAR* pwbstrOut);
        !           430: 
        !           431: #endif /* WIN32 */
        !           432: 
        !           433: 
        !           434: /*---------------------------------------------------------------------*/
        !           435: /*                             ITypeLib                                */
        !           436: /*---------------------------------------------------------------------*/
        !           437: 
        !           438: typedef enum tagSYSKIND {
        !           439:       SYS_WIN16
        !           440:     , SYS_WIN32
        !           441:     , SYS_MAC
        !           442: #ifdef _MAC
        !           443:     , SYS_FORCELONG = 2147483647
        !           444: #endif
        !           445: } SYSKIND;
        !           446: 
        !           447: typedef struct FARSTRUCT tagTLIBATTR {
        !           448:     GUID guid;                 /* globally unique library id */
        !           449:     LCID lcid;                 /* locale of the TypeLibrary */
        !           450:     SYSKIND syskind;
        !           451:     unsigned short wMajorVerNum;/* major version number        */
        !           452:     unsigned short wMinorVerNum;/* minor version number        */
        !           453: } TLIBATTR, FAR* LPTLIBATTR;
        !           454: 
        !           455: 
        !           456: #undef  INTERFACE
        !           457: #define INTERFACE ITypeLib
        !           458: 
        !           459: DECLARE_INTERFACE_(ITypeLib, IUnknown)
        !           460: {
        !           461:     BEGIN_INTERFACE
        !           462: 
        !           463:     /* IUnknown methods */
        !           464:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !           465:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !           466:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !           467: 
        !           468:     /* ITypeLib methods */
        !           469:     STDMETHOD_(unsigned int,GetTypeInfoCount)(THIS) PURE;
        !           470: 
        !           471:     STDMETHOD(GetTypeInfo)(THIS_
        !           472:       unsigned int index, ITypeInfo FAR* FAR* pptinfo) PURE;
        !           473: 
        !           474:     STDMETHOD(GetTypeInfoOfGuid)(THIS_
        !           475:       REFGUID guid, ITypeInfo FAR* FAR* pptinfo) PURE;
        !           476: 
        !           477:     STDMETHOD(GetLibAttr)(THIS_
        !           478:       TLIBATTR FAR* FAR* pptlibattr) PURE;
        !           479: 
        !           480:     STDMETHOD(GetTypeComp)(THIS_
        !           481:       ITypeComp FAR* FAR* pptcomp) PURE;
        !           482: 
        !           483:     STDMETHOD(GetDocumentation)(THIS_
        !           484:       int index,
        !           485:       BSTR FAR* pbstrName,
        !           486:       BSTR FAR* pbstrDocString,
        !           487:       unsigned long FAR* pdwHelpContext,
        !           488:       BSTR FAR* pbstrHelpFile) PURE;
        !           489: 
        !           490:     STDMETHOD(IsName)(THIS_
        !           491:       char FAR* szNameBuf, unsigned short wHashVal, int FAR* pfName) PURE;
        !           492: 
        !           493:     STDMETHOD_(void, ReleaseTLibAttr)(THIS_ TLIBATTR FAR* ptlibattr) PURE;
        !           494: 
        !           495:     STDMETHOD(Load)(THIS_
        !           496:       IStorage FAR* pstg, char FAR* szFileName) PURE;
        !           497: };
        !           498: 
        !           499: typedef ITypeLib FAR* LPTYPELIB;
        !           500: 
        !           501: 
        !           502: #ifdef WIN32
        !           503: 
        !           504: #undef  INTERFACE
        !           505: #define INTERFACE ITypeLibW
        !           506: 
        !           507: DECLARE_INTERFACE_(ITypeLibW, IUnknown)
        !           508: {
        !           509:     BEGIN_INTERFACE
        !           510: 
        !           511:     /* IUnknown methods */
        !           512:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !           513:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !           514:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !           515: 
        !           516:     /* ITypeLib methods */
        !           517:     STDMETHOD_(unsigned int,GetTypeInfoCount)(THIS) PURE;
        !           518: 
        !           519:     STDMETHOD(GetTypeInfo)(THIS_
        !           520:       unsigned int index, ITypeInfoW FAR* FAR* pptinfo) PURE;
        !           521: 
        !           522:     STDMETHOD(GetTypeInfoOfGuid)(THIS_
        !           523:       REFGUID guid, ITypeInfoW FAR* FAR* pptinfo) PURE;
        !           524: 
        !           525:     STDMETHOD(GetLibAttr)(THIS_
        !           526:       TLIBATTR FAR* FAR* pptlibattr) PURE;
        !           527: 
        !           528:     STDMETHOD(GetTypeComp)(THIS_
        !           529:       ITypeCompW FAR* FAR* pptcomp) PURE;
        !           530: 
        !           531:     STDMETHOD(GetDocumentation)(THIS_
        !           532:       int index,
        !           533:       WBSTR FAR* pwbstrName,
        !           534:       WBSTR FAR* pwbstrDocString,
        !           535:       unsigned long FAR* pdwHelpContext,
        !           536:       WBSTR FAR* pwbstrHelpFile) PURE;
        !           537: 
        !           538:     STDMETHOD(IsName)(THIS_
        !           539:       LPWSTR szNameBuf, unsigned short wHashVal, int FAR* pfName) PURE;
        !           540: 
        !           541:     STDMETHOD_(void, ReleaseTLibAttr)(THIS_ TLIBATTR FAR* ptlibattr) PURE;
        !           542: 
        !           543:     STDMETHOD(Load)(THIS_
        !           544:       IStorage FAR* pstg, LPWSTR szFileName) PURE;
        !           545: };
        !           546: 
        !           547: typedef ITypeLibW FAR* LPTYPELIBW;
        !           548: 
        !           549: #endif /* WIN32 */
        !           550: 
        !           551: 
        !           552: /*---------------------------------------------------------------------*/
        !           553: /*                            ITypeInfo                                */
        !           554: /*---------------------------------------------------------------------*/
        !           555: 
        !           556: 
        !           557: typedef long DISPID;
        !           558: typedef DISPID MEMBERID;
        !           559: 
        !           560: #define MEMBERID_NIL DISPID_UNKNOWN
        !           561: #define ID_DEFAULTINST -2
        !           562: 
        !           563: typedef unsigned long HREFTYPE;
        !           564: 
        !           565: typedef enum tagTYPEKIND {
        !           566:       TKIND_ENUM = 0
        !           567:     , TKIND_RECORD
        !           568:     , TKIND_MODULE
        !           569:     , TKIND_INTERFACE
        !           570:     , TKIND_DISPATCH
        !           571:     , TKIND_COCLASS
        !           572:     , TKIND_ALIAS
        !           573:     , TKIND_UNION
        !           574:     , TKIND_ENCUNION
        !           575:     , TKIND_Class
        !           576:     , TKIND_TYPE
        !           577:     , TKIND_CONNECTOR
        !           578:     , TKIND_MAX                        /* end of enum marker */
        !           579: #ifdef _MAC
        !           580:     , TKIND_FORCELONG = 2147483647
        !           581: #endif
        !           582: } TYPEKIND;
        !           583: 
        !           584: 
        !           585: typedef struct FARSTRUCT tagTYPEDESC {
        !           586:     union {
        !           587:       /* VT_PTR - the pointed-at type */
        !           588:       struct FARSTRUCT tagTYPEDESC FAR* lptdesc;
        !           589: 
        !           590:       /* VT_CARRAY */
        !           591:       struct FARSTRUCT tagARRAYDESC FAR* lpadesc;
        !           592: 
        !           593:       /* VT_FUNCPTR */
        !           594:       struct FARSTRUCT tagFUNCDESC FAR* lpfdesc;
        !           595: 
        !           596:       /* VT_USERDEFINED - this is used to get a TypeInfo for the UDT */
        !           597:       HREFTYPE hreftype;
        !           598: 
        !           599:     }UNION_NAME(u);
        !           600:     VARTYPE vt;
        !           601: } TYPEDESC;
        !           602: 
        !           603: typedef struct FARSTRUCT tagARRAYDESC {
        !           604:     TYPEDESC tdescElem;                /* element type */
        !           605:     unsigned short cDims;      /* dimension count */
        !           606:     SAFEARRAYBOUND rgbounds[1];        /* variable length array of bounds */
        !           607: } ARRAYDESC;
        !           608: 
        !           609: typedef struct FARSTRUCT tagIDLDESC {
        !           610:     BSTR bstrIDLInfo;
        !           611:     unsigned short wIDLFlags;  /* IN, OUT, etc */
        !           612: } IDLDESC, FAR* LPIDLDESC;
        !           613: 
        !           614: #ifdef WIN32
        !           615: typedef struct FARSTRUCT tagWIDLDESC {
        !           616:     WBSTR wbstrIDLInfo;
        !           617:     unsigned short wIDLFlags;  /* IN, OUT, etc */
        !           618: } WIDLDESC, FAR* LPWIDLDESC;
        !           619: #endif
        !           620: 
        !           621: #define IDLFLAG_NONE   0
        !           622: #define IDLFLAG_FIN    0x1
        !           623: #define IDLFLAG_FOUT   0x2
        !           624: #define IDLFLAG_FSTRING        0x4
        !           625: 
        !           626: typedef struct FARSTRUCT tagELEMDESC {
        !           627:     TYPEDESC tdesc;            /* the type of the element */
        !           628:     IDLDESC idldesc;           /* info for remoting the element */ 
        !           629: } ELEMDESC, FAR* LPELEMDESC;
        !           630: 
        !           631: #ifdef WIN32
        !           632: typedef struct FARSTRUCT tagWELEMDESC {
        !           633:     TYPEDESC tdesc;            /* the type of the element */
        !           634:     WIDLDESC idldesc;          /* info for remoting the element */ 
        !           635: } WELEMDESC, FAR* LPWELEMDESC;
        !           636: #endif
        !           637: 
        !           638: 
        !           639: typedef struct FARSTRUCT tagTYPEATTR {
        !           640:     GUID guid;                 /* the GUID of the TypeInfo */
        !           641:     LCID lcid;                 /* locale of member names and doc strings */
        !           642:     unsigned long dwReserved;
        !           643:     MEMBERID memidConstructor; /* ID of constructor, MEMBERID_NIL if none */
        !           644:     MEMBERID memidDestructor;  /* ID of destructor, MEMBERID_NIL if none */
        !           645:     char FAR* lpstrSchema;     /* reserved for future use */
        !           646:     unsigned long cbSizeInstance;/* the size of an instance of this type */
        !           647:     TYPEKIND typekind;         /* the kind of type this typeinfo describes */
        !           648:     unsigned short cFuncs;     /* number of functions */
        !           649:     unsigned short cVars;      /* number of variables / data members */
        !           650:     unsigned short cImplTypes; /* number of implemented interfaces */
        !           651:     unsigned short cbSizeVft;  /* the size of this types virtual func table */
        !           652:     unsigned short cbAlignment;        /* the alignment for an instance of this type */
        !           653:     unsigned short wTypeFlags;
        !           654:     unsigned short wMajorVerNum;/* major version number */
        !           655:     unsigned short wMinorVerNum;/* minor version number */
        !           656:     TYPEDESC tdescAlias;       /* if typekind == TKIND_ALIAS this specifies
        !           657:                                   the type for which this type is an alias */
        !           658:     IDLDESC idldescType;        /* IDL attributes of the described type */
        !           659: } TYPEATTR, FAR* LPTYPEATTR;
        !           660: 
        !           661: #ifdef WIN32
        !           662: typedef struct FARSTRUCT tagWTYPEATTR {
        !           663:     GUID guid;
        !           664:     LCID lcid;
        !           665:     unsigned long dwReserved;
        !           666:     MEMBERID memidConstructor;
        !           667:     MEMBERID memidDestructor;
        !           668:     LPWSTR lpwstrSchema;
        !           669:     unsigned long cbSizeInstance;
        !           670:     TYPEKIND typekind;
        !           671:     unsigned short cFuncs;
        !           672:     unsigned short cVars;
        !           673:     unsigned short cImplTypes;
        !           674:     unsigned short cbSizeVft;
        !           675:     unsigned short cbAlignment;
        !           676:     unsigned short wTypeFlags;
        !           677:     unsigned short wMajorVerNum;
        !           678:     unsigned short wMinorVerNum;
        !           679:     TYPEDESC tdescAlias;
        !           680:     WIDLDESC idldescType;
        !           681: } WTYPEATTR, FAR* LPWTYPEATTR;
        !           682: #endif
        !           683: 
        !           684: typedef struct FARSTRUCT tagDISPPARAMS{
        !           685:     VARIANTARG FAR* rgvarg;
        !           686:     DISPID FAR* rgdispidNamedArgs;
        !           687:     unsigned int cArgs;
        !           688:     unsigned int cNamedArgs;
        !           689: } DISPPARAMS;
        !           690: 
        !           691: 
        !           692: typedef struct FARSTRUCT tagEXCEPINFO {
        !           693:     unsigned short wCode;             /* An error code describing the error. */
        !           694:     unsigned short wReserved;
        !           695: 
        !           696:     BSTR bstrSource;       /* A textual, human readable name of the
        !           697:                               source of the exception. It is up to the
        !           698:                               IDispatch implementor to fill this in.
        !           699:                               Typically this will be an application name. */
        !           700: 
        !           701:     BSTR bstrDescription;   /* A textual, human readable description of the
        !           702:                               error. If no description is available, NULL
        !           703:                               should be used. */
        !           704: 
        !           705:     BSTR bstrHelpFile;      /* Fully qualified drive, path, and file name
        !           706:                               of a help file with more information about
        !           707:                               the error.  If no help is available, NULL
        !           708:                               should be used. */
        !           709: 
        !           710:     unsigned long dwHelpContext;
        !           711:                            /* help context of topic within the help file. */
        !           712: 
        !           713:     void FAR* pvReserved;
        !           714: 
        !           715:     /* Use of this field allows an application to defer filling in
        !           716:        the bstrDescription, bstrHelpFile, and dwHelpContext fields
        !           717:        until they are needed.  This field might be used, for example,
        !           718:        if loading the string for the error is a time-consuming
        !           719:        operation. If deferred fill-in is not desired, this field should
        !           720:        be set to NULL. */
        !           721: #ifdef _MAC
        !           722: # ifdef _MSC_VER
        !           723:     HRESULT (STDAPICALLTYPE FAR* pfnDeferredFillIn)(struct tagEXCEPINFO FAR*);
        !           724: # else
        !           725:     STDAPICALLTYPE HRESULT (FAR* pfnDeferredFillIn)(struct tagEXCEPINFO FAR*);
        !           726: # endif
        !           727: #else
        !           728:     HRESULT (STDAPICALLTYPE FAR* pfnDeferredFillIn)(struct tagEXCEPINFO FAR*);
        !           729: #endif
        !           730: 
        !           731:     unsigned long dwReserved;
        !           732: } EXCEPINFO, FAR* LPEXCEPINFO;
        !           733: 
        !           734: 
        !           735: #ifdef WIN32
        !           736: typedef struct FARSTRUCT tagWEXCEPINFO {
        !           737:     unsigned short wCode;
        !           738:     unsigned short wReserved;
        !           739:     WBSTR wbstrSource;     
        !           740:     WBSTR wbstrDescription;
        !           741:     WBSTR wbstrHelpFile;
        !           742:     unsigned long dwHelpContext;
        !           743:     void FAR* pvReserved;
        !           744:     HRESULT (STDAPICALLTYPE FAR* pfnDeferredFillIn)(struct tagWEXCEPINFO FAR*);
        !           745:     unsigned long dwReserved;
        !           746: } WEXCEPINFO, FAR* LPWEXCEPINFO;
        !           747: #endif
        !           748: 
        !           749: typedef enum tagCALLCONV {
        !           750:       CC_CDECL = 1
        !           751:     , CC_MSCPASCAL
        !           752:     , CC_PASCAL = CC_MSCPASCAL
        !           753:     , CC_MACPASCAL
        !           754:     , CC_STDCALL
        !           755:     , CC_RESERVED
        !           756:     , CC_SYSCALL
        !           757:     , CC_MAX                   /* end of enum marker */
        !           758: #ifdef _MAC
        !           759:     , CC_FORCELONG = 2147483647
        !           760: #endif
        !           761: } CALLCONV;
        !           762: 
        !           763: typedef enum tagFUNCKIND {
        !           764:       FUNC_VIRTUAL
        !           765:     , FUNC_PUREVIRTUAL
        !           766:     , FUNC_NONVIRTUAL
        !           767:     , FUNC_STATIC
        !           768:     , FUNC_DISPATCH
        !           769: #ifdef _MAC
        !           770:     , FUNC_FORCELONG = 2147483647
        !           771: #endif
        !           772: } FUNCKIND;
        !           773: 
        !           774: /* Flags for IDispatch::Invoke */
        !           775: #define DISPATCH_METHOD                0x1
        !           776: #define DISPATCH_PROPERTYGET   0x2
        !           777: #define DISPATCH_PROPERTYPUT   0x4
        !           778: #define DISPATCH_PROPERTYPUTREF        0x8
        !           779: 
        !           780: typedef enum tagINVOKEKIND {
        !           781:       INVOKE_FUNC = DISPATCH_METHOD
        !           782:     , INVOKE_PROPERTYGET = DISPATCH_PROPERTYGET
        !           783:     , INVOKE_PROPERTYPUT = DISPATCH_PROPERTYPUT
        !           784:     , INVOKE_PROPERTYPUTREF = DISPATCH_PROPERTYPUTREF
        !           785: #ifdef _MAC
        !           786:     , INVOKE_FORCELONG = 2147483647
        !           787: #endif
        !           788: } INVOKEKIND;
        !           789: 
        !           790: typedef struct FARSTRUCT tagFUNCDESC {
        !           791:     MEMBERID memid;
        !           792:     SCODE FAR* lprgscode;
        !           793:     ELEMDESC FAR* lprgelemdescParam;  /* array of parameter types */
        !           794:     FUNCKIND funckind;
        !           795:     INVOKEKIND invkind;
        !           796:     CALLCONV callconv;
        !           797:     short cParams;
        !           798:     short cParamsOpt;
        !           799:     short oVft;
        !           800:     short cScodes;
        !           801:     ELEMDESC elemdescFunc;
        !           802:     unsigned short wFuncFlags;
        !           803: } FUNCDESC, FAR* LPFUNCDESC;
        !           804: 
        !           805: #ifdef WIN32
        !           806: typedef struct FARSTRUCT tagWFUNCDESC {
        !           807:     MEMBERID memid;
        !           808:     SCODE FAR* lprgscode;
        !           809:     WELEMDESC FAR* lprgelemdescParam;  /* array of parameter types */
        !           810:     FUNCKIND funckind;
        !           811:     INVOKEKIND invkind;
        !           812:     CALLCONV callconv;
        !           813:     short cParams;
        !           814:     short cParamsOpt;
        !           815:     short oVft;
        !           816:     short cScodes;
        !           817:     WELEMDESC elemdescFunc;
        !           818:     unsigned short wFuncFlags;
        !           819: } WFUNCDESC, FAR* LPWFUNCDESC;
        !           820: #endif
        !           821: 
        !           822: typedef enum tagVARKIND {
        !           823:       VAR_PERINSTANCE
        !           824:     , VAR_STATIC
        !           825:     , VAR_CONST
        !           826:     , VAR_DISPATCH
        !           827: #ifdef _MAC
        !           828:     , VAR_FORCELONG = 2147483647
        !           829: #endif
        !           830: } VARKIND;
        !           831: 
        !           832: typedef enum tagIMPLTYPEFLAGS {
        !           833:       IMPL_NONE      = 0
        !           834:     , IMPL_PLUG      = 1
        !           835:     , IMPL_JACK      = 2
        !           836:     , IMPL_OPTIONAL  = 4
        !           837:     , IMPL_COCLASS   = 8
        !           838: #ifdef _MAC
        !           839:     , IMPL_FORCELONG = 2147483647
        !           840: #endif
        !           841: } IMPLTYPEFLAGS;
        !           842: 
        !           843: typedef enum tagVARDESCFLAGS {
        !           844:       VDESC_NONE     = 0
        !           845:     , VDESC_OPTIONAL = 1
        !           846: #ifdef _MAC
        !           847:     , VDESC_FORCELONG= 2147483647
        !           848: #endif
        !           849: } VARDESCFLAGS;
        !           850: 
        !           851: typedef struct FARSTRUCT tagVARDESC {
        !           852:     MEMBERID memid;
        !           853:     char FAR* lpstrSchema;             /* reserved for future use */
        !           854:     union {
        !           855:       /* VAR_PERINSTANCE - the offset of this variable within the instance */
        !           856:       unsigned long oInst;
        !           857: 
        !           858:       /* VAR_CONST - the value of the constant */
        !           859:       VARIANT FAR* lpvarValue;
        !           860: 
        !           861:     }UNION_NAME(u);
        !           862:     ELEMDESC elemdescVar;
        !           863:     unsigned short wVarFlags;
        !           864:     VARKIND varkind;
        !           865: } VARDESC, FAR* LPVARDESC;
        !           866: 
        !           867: #ifdef WIN32
        !           868: typedef struct FARSTRUCT tagWVARDESC {
        !           869:     MEMBERID memid;
        !           870:     LPWSTR lpwstrSchema;       /* reserved for future use */
        !           871:     union {
        !           872:       unsigned long oInst;
        !           873:       VARIANT FAR* lpvarValue;
        !           874:     }UNION_NAME(u);
        !           875:     WELEMDESC elemdescVar;
        !           876:     unsigned short wVarFlags;
        !           877:     VARKIND varkind;
        !           878: } WVARDESC, FAR* LPWVARDESC;
        !           879: #endif
        !           880: 
        !           881: typedef enum tagTYPEFLAGS {
        !           882:       TYPEFLAG_FAPPOBJECT = 1
        !           883:     , TYPEFLAG_FCANCREATE = 2
        !           884: #ifdef _MAC
        !           885:     , TYPEFLAG_FORCELONG  = 2147483647
        !           886: #endif
        !           887: } TYPEFLAGS;
        !           888: 
        !           889: typedef enum tagFUNCFLAGS {
        !           890:       FUNCFLAG_FRESTRICTED= 1
        !           891:     , FUNCFLAG_FOPTIONAL  = 2
        !           892: #ifdef _MAC
        !           893:     , FUNCFLAG_FORCELONG  = 2147483647
        !           894: #endif
        !           895: } FUNCFLAGS;
        !           896: 
        !           897: typedef enum tagVARFLAGS {
        !           898:       VARFLAG_FREADONLY   = 1
        !           899: #ifdef _MAC
        !           900:     , VARFLAG_FORCELONG   = 2147483647
        !           901: #endif
        !           902: } VARFLAGS;
        !           903: 
        !           904: 
        !           905: #undef  INTERFACE
        !           906: #define INTERFACE ITypeInfo
        !           907: 
        !           908: DECLARE_INTERFACE_(ITypeInfo, IUnknown)
        !           909: {
        !           910:     BEGIN_INTERFACE
        !           911: 
        !           912:     /* IUnknown methods */
        !           913:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !           914:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !           915:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !           916: 
        !           917:     /* ITypeInfo methods */
        !           918:     STDMETHOD(GetTypeAttr)(THIS_ TYPEATTR FAR* FAR* pptypeattr) PURE;
        !           919: 
        !           920:     STDMETHOD(GetTypeComp)(THIS_ ITypeComp FAR* FAR* pptcomp) PURE;
        !           921: 
        !           922:     STDMETHOD(GetFuncDesc)(THIS_
        !           923:       unsigned int index, FUNCDESC FAR* FAR* ppfuncdesc) PURE;
        !           924: 
        !           925:     STDMETHOD(GetVarDesc)(THIS_
        !           926:       unsigned int index, VARDESC FAR* FAR* ppvardesc) PURE;
        !           927: 
        !           928:     STDMETHOD(GetNames)(THIS_
        !           929:       MEMBERID memid,
        !           930:       BSTR FAR* rgbstrNames,
        !           931:       unsigned int cMaxNames,
        !           932:       unsigned int FAR* pcNames) PURE;
        !           933: 
        !           934:     STDMETHOD(GetRefTypeOfImplType)(THIS_
        !           935:       unsigned int index, HREFTYPE FAR* phreftype) PURE;
        !           936: 
        !           937:     STDMETHOD(GetImplTypeFlags)(THIS_
        !           938:       unsigned int index, IMPLTYPEFLAGS FAR* pimpltypeflags) PURE;
        !           939: 
        !           940:     STDMETHOD(GetIDsOfNames)(THIS_
        !           941:       char FAR* FAR* rgszNames,
        !           942:       unsigned int cNames,
        !           943:       MEMBERID FAR* rgmemid) PURE;
        !           944: 
        !           945:     STDMETHOD(Invoke)(THIS_
        !           946:       void FAR* pvInstance,
        !           947:       MEMBERID memid,
        !           948:       unsigned short wFlags,
        !           949:       DISPPARAMS FAR *pdispparams,
        !           950:       VARIANT FAR *pvarResult,
        !           951:       EXCEPINFO FAR *pexcepinfo,
        !           952:       unsigned int FAR *puArgErr) PURE;
        !           953: 
        !           954:     STDMETHOD(GetDocumentation)(THIS_
        !           955:       MEMBERID memid,
        !           956:       BSTR FAR* pbstrName,
        !           957:       BSTR FAR* pbstrDocString,
        !           958:       unsigned long FAR* pdwHelpContext,
        !           959:       BSTR FAR* pbstrHelpFile) PURE;
        !           960: 
        !           961:     STDMETHOD(GetDllEntry)(THIS_
        !           962:       MEMBERID memid,
        !           963:       BSTR FAR* pbstrDllName,
        !           964:       BSTR FAR* pbstrName,
        !           965:       unsigned short FAR* pwOrdinal) PURE;
        !           966: 
        !           967:     STDMETHOD(GetRefTypeInfo)(THIS_
        !           968:       HREFTYPE hreftype, ITypeInfo FAR* FAR* pptinfo) PURE;
        !           969: 
        !           970:     STDMETHOD(AddressOfMember)(THIS_
        !           971:       MEMBERID memid, INVOKEKIND invkind, void FAR* FAR* ppv) PURE;
        !           972: 
        !           973:     STDMETHOD(CreateInstance)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !           974: 
        !           975:     STDMETHOD(GetMops)(THIS_ MEMBERID memid, BSTR FAR* pbstrMops) PURE;
        !           976: 
        !           977:     STDMETHOD(GetContainingTypeLib)(THIS_
        !           978:       ITypeLib FAR* FAR* pptlib, unsigned int FAR* pindex) PURE;
        !           979: 
        !           980:     STDMETHOD_(void, ReleaseTypeAttr)(THIS_ TYPEATTR FAR* ptypeattr) PURE;
        !           981:     STDMETHOD_(void, ReleaseFuncDesc)(THIS_ FUNCDESC FAR* pfuncdesc) PURE;
        !           982:     STDMETHOD_(void, ReleaseVarDesc)(THIS_ VARDESC FAR* pvardesc) PURE;
        !           983: };
        !           984: 
        !           985: typedef ITypeInfo FAR* LPTYPEINFO;
        !           986: 
        !           987: 
        !           988: #ifdef WIN32
        !           989: 
        !           990: #undef  INTERFACE
        !           991: #define INTERFACE ITypeInfoW
        !           992: 
        !           993: DECLARE_INTERFACE_(ITypeInfoW, IUnknown)
        !           994: {
        !           995:     BEGIN_INTERFACE
        !           996: 
        !           997:     /* IUnknown methods */
        !           998:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !           999:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1000:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1001: 
        !          1002:     /* ITypeInfo methods */
        !          1003:     STDMETHOD(GetTypeAttr)(THIS_ WTYPEATTR FAR* FAR* pptypeattr) PURE;
        !          1004: 
        !          1005:     STDMETHOD(GetTypeComp)(THIS_ ITypeCompW FAR* FAR* pptcomp) PURE;
        !          1006: 
        !          1007:     STDMETHOD(GetFuncDesc)(THIS_
        !          1008:       unsigned int index, WFUNCDESC FAR* FAR* ppfuncdesc) PURE;
        !          1009: 
        !          1010:     STDMETHOD(GetVarDesc)(THIS_
        !          1011:       unsigned int index, WVARDESC FAR* FAR* ppvardesc) PURE;
        !          1012: 
        !          1013:     STDMETHOD(GetNames)(THIS_
        !          1014:       MEMBERID memid,
        !          1015:       WBSTR FAR* rgwbstrNames,
        !          1016:       unsigned int cMaxNames,
        !          1017:       unsigned int FAR* pcNames) PURE;
        !          1018: 
        !          1019:     STDMETHOD(GetRefTypeOfImplType)(THIS_
        !          1020:       unsigned int index, HREFTYPE FAR* phreftype) PURE;
        !          1021: 
        !          1022:     STDMETHOD(GetImplTypeFlags)(THIS_
        !          1023:       unsigned int index, IMPLTYPEFLAGS FAR* pimpltypeflags) PURE;
        !          1024: 
        !          1025:     STDMETHOD(GetIDsOfNames)(THIS_
        !          1026:       WCHAR FAR* FAR* rgszNames,
        !          1027:       unsigned int cNames,
        !          1028:       MEMBERID FAR* rgmemid) PURE;
        !          1029: 
        !          1030:     STDMETHOD(Invoke)(THIS_
        !          1031:       void FAR* pvInstance,
        !          1032:       MEMBERID memid,
        !          1033:       unsigned short wFlags,
        !          1034:       DISPPARAMS FAR *pdispparams,
        !          1035:       VARIANT FAR *pvarResult,
        !          1036:       WEXCEPINFO FAR *pexcepinfo,
        !          1037:       unsigned int FAR *puArgErr) PURE;
        !          1038: 
        !          1039:     STDMETHOD(GetDocumentation)(THIS_
        !          1040:       MEMBERID memid,
        !          1041:       WBSTR FAR* pwbstrName,
        !          1042:       WBSTR FAR* pwbstrDocString,
        !          1043:       unsigned long FAR* pdwHelpContext,
        !          1044:       WBSTR FAR* pwbstrHelpFile) PURE;
        !          1045: 
        !          1046:     STDMETHOD(GetDllEntry)(THIS_
        !          1047:       MEMBERID memid,
        !          1048:       WBSTR FAR* pwbstrDllName,
        !          1049:       WBSTR FAR* pwbstrName,
        !          1050:       unsigned short FAR* pwOrdinal) PURE;
        !          1051: 
        !          1052:     STDMETHOD(GetRefTypeInfo)(THIS_
        !          1053:       HREFTYPE hreftype, ITypeInfoW FAR* FAR* pptinfo) PURE;
        !          1054: 
        !          1055:     STDMETHOD(AddressOfMember)(THIS_
        !          1056:       MEMBERID memid, INVOKEKIND invkind, void FAR* FAR* ppv) PURE;
        !          1057: 
        !          1058:     STDMETHOD(CreateInstance)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1059: 
        !          1060:     STDMETHOD(GetMops)(THIS_ MEMBERID memid, WBSTR FAR* pwbstrMops) PURE;
        !          1061: 
        !          1062:     STDMETHOD(GetContainingTypeLib)(THIS_
        !          1063:       ITypeLibW FAR* FAR* pptlib, unsigned int FAR* pindex) PURE;
        !          1064: 
        !          1065:     STDMETHOD_(void, ReleaseTypeAttr)(THIS_ WTYPEATTR FAR* ptypeattr) PURE;
        !          1066:     STDMETHOD_(void, ReleaseFuncDesc)(THIS_ WFUNCDESC FAR* pfuncdesc) PURE;
        !          1067:     STDMETHOD_(void, ReleaseVarDesc)(THIS_ WVARDESC FAR* pvardesc) PURE;
        !          1068: };
        !          1069: 
        !          1070: typedef ITypeInfoW FAR* LPTYPEINFOW;
        !          1071: 
        !          1072: #endif /* WIN32 */
        !          1073: 
        !          1074: 
        !          1075: /*---------------------------------------------------------------------*/
        !          1076: /*                            ITypeComp                                */
        !          1077: /*---------------------------------------------------------------------*/
        !          1078: 
        !          1079: typedef enum tagDESCKIND {
        !          1080:       DESCKIND_NONE = 0
        !          1081:     , DESCKIND_FUNCDESC
        !          1082:     , DESCKIND_VARDESC
        !          1083:     , DESCKIND_TYPECOMP
        !          1084:     , DESCKIND_IMPLICITAPPOBJ
        !          1085:     , DESCKIND_MAX             /* end of enum marker */
        !          1086: #ifdef _MAC
        !          1087:     , DESCKIND_FORCELONG = 2147483647
        !          1088: #endif
        !          1089: } DESCKIND;
        !          1090: 
        !          1091: typedef union tagBINDPTR {
        !          1092:     FUNCDESC FAR* lpfuncdesc;
        !          1093:     VARDESC FAR* lpvardesc;
        !          1094:     ITypeComp FAR* lptcomp;
        !          1095: } BINDPTR, FAR* LPBINDPTR;
        !          1096: 
        !          1097: 
        !          1098: #undef  INTERFACE
        !          1099: #define INTERFACE ITypeComp
        !          1100: 
        !          1101: DECLARE_INTERFACE_(ITypeComp, IUnknown)
        !          1102: {
        !          1103:     BEGIN_INTERFACE
        !          1104: 
        !          1105:     /* IUnknown methods */
        !          1106:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1107:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1108:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1109: 
        !          1110:     /* ITypeComp methods */
        !          1111:     STDMETHOD(Bind)(THIS_
        !          1112:       char FAR* szName,
        !          1113:       unsigned short wHashVal,
        !          1114:       unsigned short wflags,
        !          1115:       ITypeInfo FAR* FAR* pptinfo,
        !          1116:       DESCKIND FAR* pdesckind,
        !          1117:       BINDPTR FAR* pbindptr) PURE;
        !          1118: 
        !          1119:     STDMETHOD(BindType)(THIS_
        !          1120:       char FAR* szName,
        !          1121:       unsigned short wHashVal,
        !          1122:       ITypeInfo FAR* FAR* pptinfo,
        !          1123:       ITypeComp FAR* FAR* pptcomp) PURE;
        !          1124: };
        !          1125: 
        !          1126: typedef ITypeComp FAR* LPTYPECOMP;
        !          1127: 
        !          1128: 
        !          1129: #ifdef WIN32
        !          1130: 
        !          1131: #undef  INTERFACE
        !          1132: #define INTERFACE ITypeCompW
        !          1133: 
        !          1134: DECLARE_INTERFACE_(ITypeCompW, IUnknown)
        !          1135: {
        !          1136:     BEGIN_INTERFACE
        !          1137: 
        !          1138:     /* IUnknown methods */
        !          1139:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1140:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1141:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1142: 
        !          1143:     /* ITypeComp methods */
        !          1144:     STDMETHOD(Bind)(THIS_
        !          1145:       LPWSTR szName,
        !          1146:       unsigned short wHashVal,
        !          1147:       unsigned short wflags,
        !          1148:       ITypeInfoW FAR* FAR* pptinfo,
        !          1149:       DESCKIND FAR* pdesckind,
        !          1150:       BINDPTR FAR* pbindptr) PURE;
        !          1151: 
        !          1152:     STDMETHOD(BindType)(THIS_
        !          1153:       LPWSTR szName,
        !          1154:       unsigned short wHashVal,
        !          1155:       ITypeInfoW FAR* FAR* pptinfo,
        !          1156:       ITypeCompW FAR* FAR* pptcomp) PURE;
        !          1157: };
        !          1158: 
        !          1159: typedef ITypeCompW FAR* LPWTYPECOMP;
        !          1160: 
        !          1161: #endif /* WIN32 */
        !          1162: 
        !          1163: 
        !          1164: /*---------------------------------------------------------------------*/
        !          1165: /*                         ICreateTypeLib                              */
        !          1166: /*---------------------------------------------------------------------*/
        !          1167: 
        !          1168: 
        !          1169: #undef  INTERFACE
        !          1170: #define INTERFACE ICreateTypeLib
        !          1171: 
        !          1172: DECLARE_INTERFACE_(ICreateTypeLib, IUnknown)
        !          1173: {
        !          1174:     BEGIN_INTERFACE
        !          1175: 
        !          1176:     /* IUnknown methods */
        !          1177:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1178:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1179:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1180: 
        !          1181:     /* ICreateTypeLib methods */
        !          1182:     STDMETHOD(CreateTypeInfo)(THIS_
        !          1183:       char FAR* szName,
        !          1184:       TYPEKIND tkind,
        !          1185:       ICreateTypeInfo FAR* FAR* lplpictinfo) PURE;
        !          1186: 
        !          1187:     STDMETHOD(SetName)(THIS_ char FAR* szName) PURE;
        !          1188: 
        !          1189:     STDMETHOD(SetVersion)(THIS_
        !          1190:       unsigned short wMajorVerNum, unsigned short wMinorVerNum) PURE;
        !          1191: 
        !          1192:     STDMETHOD(SetGuid) (THIS_ REFGUID guid) PURE;
        !          1193: 
        !          1194:     STDMETHOD(SetDocString)(THIS_ char FAR* szDoc) PURE;
        !          1195: 
        !          1196:     STDMETHOD(SetHelpFileName)(THIS_ char FAR* szHelpFileName) PURE;
        !          1197: 
        !          1198:     STDMETHOD(SetHelpContext)(THIS_ unsigned long dwHelpContext) PURE;
        !          1199: 
        !          1200:     STDMETHOD(SetLcid)(THIS_ LCID lcid) PURE;
        !          1201: 
        !          1202:     STDMETHOD(SaveAllChanges)(THIS_ IStorage FAR* pstg) PURE;
        !          1203: };
        !          1204: 
        !          1205: typedef ICreateTypeLib FAR* LPCREATETYPELIB;
        !          1206: 
        !          1207: 
        !          1208: #ifdef WIN32
        !          1209: 
        !          1210: #undef  INTERFACE
        !          1211: #define INTERFACE ICreateTypeLibW
        !          1212: 
        !          1213: DECLARE_INTERFACE_(ICreateTypeLibW, IUnknown)
        !          1214: {
        !          1215:     BEGIN_INTERFACE
        !          1216: 
        !          1217:     /* IUnknown methods */
        !          1218:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1219:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1220:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1221: 
        !          1222:     /* ICreateTypeLib methods */
        !          1223:     STDMETHOD(CreateTypeInfo)(THIS_
        !          1224:       LPWSTR szName,
        !          1225:       TYPEKIND tkind,
        !          1226:       ICreateTypeInfoW FAR* FAR* lplpictinfo) PURE;
        !          1227: 
        !          1228:     STDMETHOD(SetName)(THIS_ LPWSTR szName) PURE;
        !          1229: 
        !          1230:     STDMETHOD(SetVersion)(THIS_
        !          1231:       unsigned short wMajorVerNum, unsigned short wMinorVerNum) PURE;
        !          1232: 
        !          1233:     STDMETHOD(SetGuid) (THIS_ REFGUID guid) PURE;
        !          1234: 
        !          1235:     STDMETHOD(SetDocString)(THIS_ LPWSTR szDoc) PURE;
        !          1236: 
        !          1237:     STDMETHOD(SetHelpFileName)(THIS_ LPWSTR szHelpFileName) PURE;
        !          1238: 
        !          1239:     STDMETHOD(SetHelpContext)(THIS_ unsigned long dwHelpContext) PURE;
        !          1240: 
        !          1241:     STDMETHOD(SetLcid)(THIS_ LCID lcid) PURE;
        !          1242: 
        !          1243:     STDMETHOD(SaveAllChanges)(THIS_ IStorage FAR* pstg) PURE;
        !          1244: };
        !          1245: 
        !          1246: typedef ICreateTypeLibW FAR* LPCREATETYPELIBW;
        !          1247: 
        !          1248: #endif /* WIN32 */
        !          1249: 
        !          1250: 
        !          1251: /*---------------------------------------------------------------------*/
        !          1252: /*                         ICreateTypeInfo                             */
        !          1253: /*---------------------------------------------------------------------*/
        !          1254: 
        !          1255: #undef  INTERFACE
        !          1256: #define INTERFACE ICreateTypeInfo
        !          1257: 
        !          1258: DECLARE_INTERFACE_(ICreateTypeInfo, IUnknown)
        !          1259: {
        !          1260:     BEGIN_INTERFACE
        !          1261: 
        !          1262:     /* IUnknown methods */
        !          1263:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1264:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1265:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1266: 
        !          1267:     /* ICreateTypeInfo methods */
        !          1268:     STDMETHOD(SetGuid)(THIS_ REFGUID guid) PURE;
        !          1269: 
        !          1270:     STDMETHOD(SetTypeFlags)(THIS_ unsigned int uTypeFlags) PURE;
        !          1271: 
        !          1272:     STDMETHOD(SetDocString)(THIS_ char FAR* pstrDoc) PURE;
        !          1273: 
        !          1274:     STDMETHOD(SetHelpContext)(THIS_ unsigned long dwHelpContext) PURE;
        !          1275: 
        !          1276:     STDMETHOD(SetVersion)(THIS_
        !          1277:       unsigned short wMajorVerNum, unsigned short wMinorVerNum) PURE;
        !          1278: 
        !          1279:     STDMETHOD(AddRefTypeInfo)(THIS_
        !          1280:       ITypeInfo FAR* ptinfo, HREFTYPE FAR* phreftype) PURE;
        !          1281: 
        !          1282:     STDMETHOD(AddFuncDesc)(THIS_
        !          1283:       unsigned int index, FUNCDESC FAR* pfuncdesc) PURE;
        !          1284: 
        !          1285:     STDMETHOD(AddImplType)(THIS_
        !          1286:       unsigned int index, HREFTYPE hreftype) PURE;
        !          1287: 
        !          1288:     STDMETHOD(SetImplTypeFlags)(THIS_
        !          1289:       unsigned int index, IMPLTYPEFLAGS impltypeflags) PURE;
        !          1290: 
        !          1291:     STDMETHOD(SetAlignment)(THIS_ unsigned short cbAlignment) PURE;
        !          1292: 
        !          1293:     STDMETHOD(SetSchema)(THIS_ char FAR* lpstrSchema) PURE;
        !          1294: 
        !          1295:     STDMETHOD(AddVarDesc)(THIS_
        !          1296:       unsigned int index, VARDESC FAR* pvardesc) PURE;
        !          1297: 
        !          1298:     STDMETHOD(SetFuncAndParamNames)(THIS_
        !          1299:       unsigned int index, char FAR* FAR* rgszNames, unsigned int cNames) PURE;
        !          1300: 
        !          1301:     STDMETHOD(SetVarName)(THIS_
        !          1302:       unsigned int index, char FAR* szName) PURE;
        !          1303: 
        !          1304:     STDMETHOD(SetTypeDescAlias)(THIS_
        !          1305:       TYPEDESC FAR* ptdescAlias) PURE;
        !          1306: 
        !          1307:     STDMETHOD(DefineFuncAsDllEntry)(THIS_
        !          1308:       unsigned int index, char FAR* szDllName, char FAR* szProcName) PURE;
        !          1309: 
        !          1310:     STDMETHOD(SetFuncDocString)(THIS_
        !          1311:       unsigned int index, char FAR* szDocString) PURE;
        !          1312: 
        !          1313:     STDMETHOD(SetVarDocString)(THIS_
        !          1314:       unsigned int index, char FAR* szDocString) PURE;
        !          1315: 
        !          1316:     STDMETHOD(SetFuncHelpContext)(THIS_
        !          1317:       unsigned int index, unsigned long dwHelpContext) PURE;
        !          1318: 
        !          1319:     STDMETHOD(SetVarHelpContext)(THIS_
        !          1320:       unsigned int index, unsigned long dwHelpContext) PURE;
        !          1321: 
        !          1322:     STDMETHOD(SetMops)(THIS_
        !          1323:       unsigned int index, BSTR bstrMops) PURE;
        !          1324: 
        !          1325:     STDMETHOD(SetTypeIdldesc)(THIS_
        !          1326:       IDLDESC FAR* pidldesc) PURE;
        !          1327: 
        !          1328:     STDMETHOD(LayOut)(THIS) PURE;
        !          1329: };
        !          1330: 
        !          1331: typedef ICreateTypeInfo FAR* LPCREATETYPEINFO;
        !          1332: 
        !          1333: 
        !          1334: #ifdef WIN32
        !          1335: 
        !          1336: #undef  INTERFACE
        !          1337: #define INTERFACE ICreateTypeInfoW
        !          1338: 
        !          1339: DECLARE_INTERFACE_(ICreateTypeInfoW, IUnknown)
        !          1340: {
        !          1341:     BEGIN_INTERFACE
        !          1342: 
        !          1343:     /* IUnknown methods */
        !          1344:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1345:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1346:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1347: 
        !          1348:     /* ICreateTypeInfo methods */
        !          1349:     STDMETHOD(SetGuid)(THIS_ REFGUID guid) PURE;
        !          1350: 
        !          1351:     STDMETHOD(SetTypeFlags)(THIS_ unsigned int uTypeFlags) PURE;
        !          1352: 
        !          1353:     STDMETHOD(SetDocString)(THIS_ LPWSTR pstrDoc) PURE;
        !          1354: 
        !          1355:     STDMETHOD(SetHelpContext)(THIS_ unsigned long dwHelpContext) PURE;
        !          1356: 
        !          1357:     STDMETHOD(SetVersion)(THIS_
        !          1358:       unsigned short wMajorVerNum, unsigned short wMinorVerNum) PURE;
        !          1359: 
        !          1360:     STDMETHOD(AddRefTypeInfo)(THIS_
        !          1361:       ITypeInfoW FAR* ptinfo, HREFTYPE FAR* phreftype) PURE;
        !          1362: 
        !          1363:     STDMETHOD(AddFuncDesc)(THIS_
        !          1364:       unsigned int index, WFUNCDESC FAR* pfuncdesc) PURE;
        !          1365: 
        !          1366:     STDMETHOD(AddImplType)(THIS_
        !          1367:       unsigned int index, HREFTYPE hreftype) PURE;
        !          1368: 
        !          1369:     STDMETHOD(SetImplTypeFlags)(THIS_
        !          1370:       unsigned int index, IMPLTYPEFLAGS impltypeflags) PURE;
        !          1371: 
        !          1372:     STDMETHOD(SetAlignment)(THIS_ unsigned short cbAlignment) PURE;
        !          1373: 
        !          1374:     STDMETHOD(SetSchema)(THIS_ LPWSTR lpwstrSchema) PURE;
        !          1375: 
        !          1376:     STDMETHOD(AddVarDesc)(THIS_
        !          1377:       unsigned int index, WVARDESC FAR* pvardesc) PURE;
        !          1378: 
        !          1379:     STDMETHOD(SetFuncAndParamNames)(THIS_
        !          1380:       unsigned int index, LPWSTR FAR* rgszNames, unsigned int cNames) PURE;
        !          1381: 
        !          1382:     STDMETHOD(SetVarName)(THIS_
        !          1383:       unsigned int index, LPWSTR szName) PURE;
        !          1384: 
        !          1385:     STDMETHOD(SetTypeDescAlias)(THIS_
        !          1386:       TYPEDESC FAR* ptdescAlias) PURE;
        !          1387: 
        !          1388:     STDMETHOD(DefineFuncAsDllEntry)(THIS_
        !          1389:       unsigned int index, LPWSTR szDllName, char FAR* szProcName) PURE;
        !          1390: 
        !          1391:     STDMETHOD(SetFuncDocString)(THIS_
        !          1392:       unsigned int index, LPWSTR szDocString) PURE;
        !          1393: 
        !          1394:     STDMETHOD(SetVarDocString)(THIS_
        !          1395:       unsigned int index, LPWSTR szDocString) PURE;
        !          1396: 
        !          1397:     STDMETHOD(SetFuncHelpContext)(THIS_
        !          1398:       unsigned int index, unsigned long dwHelpContext) PURE;
        !          1399: 
        !          1400:     STDMETHOD(SetVarHelpContext)(THIS_
        !          1401:       unsigned int index, unsigned long dwHelpContext) PURE;
        !          1402: 
        !          1403:     STDMETHOD(SetMops)(THIS_
        !          1404:       unsigned int index, WBSTR bstrMops) PURE;
        !          1405: 
        !          1406:     STDMETHOD(SetTypeIdldesc)(THIS_
        !          1407:       WIDLDESC FAR* pidldesc) PURE;
        !          1408: 
        !          1409:     STDMETHOD(LayOut)(THIS) PURE;
        !          1410: };
        !          1411: 
        !          1412: typedef ICreateTypeInfoW FAR* LPCREATETYPEINFOW;
        !          1413: 
        !          1414: #endif /* WIN32 */
        !          1415: 
        !          1416: 
        !          1417: /*---------------------------------------------------------------------*/
        !          1418: /*                         TypeInfo APIs                               */
        !          1419: /*---------------------------------------------------------------------*/
        !          1420: 
        !          1421: /* compute a 16bit hash value for the given name
        !          1422:  */
        !          1423: STDAPI_(unsigned short)
        !          1424: WHashValOfName(char FAR* szName);
        !          1425: 
        !          1426: /* load the typelib from the file with the given filename
        !          1427:  */
        !          1428: STDAPI
        !          1429: LoadTypeLib(char FAR* szFile, ITypeLib FAR* FAR* pptlib);
        !          1430: 
        !          1431: /* load registered typelib
        !          1432:  */
        !          1433: STDAPI
        !          1434: LoadRegTypeLib(
        !          1435:     REFGUID rguid,
        !          1436:     unsigned short wVerMajor,
        !          1437:     unsigned short wVerMinor,
        !          1438:     LCID lcid,
        !          1439:     ITypeLib FAR* FAR* pptlib);
        !          1440: 
        !          1441: /* add typelib to registry
        !          1442:  */
        !          1443: STDAPI
        !          1444: RegisterTypeLib(
        !          1445:     ITypeLib FAR* ptlib,
        !          1446:     char FAR* szFullPath,
        !          1447:     char FAR* szHelpDir);
        !          1448: 
        !          1449: /* remove typelib from registry
        !          1450:  */
        !          1451: STDAPI
        !          1452: DeregisterTypeLib(
        !          1453:     REFGUID rguid,
        !          1454:     unsigned short wVerMajor,
        !          1455:     unsigned short wVerMinor,
        !          1456:     LCID lcid);
        !          1457: 
        !          1458: STDAPI
        !          1459: CreateTypeLib(SYSKIND syskind, ICreateTypeLib FAR* FAR* ppctlib);
        !          1460: 
        !          1461: 
        !          1462: #ifdef WIN32
        !          1463: 
        !          1464: STDAPI_(unsigned short)
        !          1465: WHashValOfNameW(LPWSTR szName);
        !          1466: 
        !          1467: STDAPI
        !          1468: LoadTypeLibW(LPWSTR szFile, ITypeLibW FAR* FAR* pptlib);
        !          1469: 
        !          1470: STDAPI
        !          1471: LoadRegTypeLibW(
        !          1472:     REFGUID rguid,
        !          1473:     unsigned short wVerMajor,
        !          1474:     unsigned short wVerMinor,
        !          1475:     LCID lcid,
        !          1476:     ITypeLibW FAR* FAR* pptlib);
        !          1477: 
        !          1478: STDAPI
        !          1479: RegisterTypeLibW(
        !          1480:     ITypeLibW FAR* ptlib,
        !          1481:     LPWSTR szFullPath,
        !          1482:     LPWSTR szHelpDir);
        !          1483: 
        !          1484: STDAPI
        !          1485: CreateTypeLibW(SYSKIND syskind, ICreateTypeLibW FAR* FAR* ppctlib);
        !          1486: 
        !          1487: #endif /* WIN32 */
        !          1488: 
        !          1489: 
        !          1490: /*---------------------------------------------------------------------*/
        !          1491: /*                          IEnumVARIANT                               */
        !          1492: /*---------------------------------------------------------------------*/
        !          1493: 
        !          1494: #undef  INTERFACE
        !          1495: #define INTERFACE IEnumVARIANT
        !          1496: 
        !          1497: DECLARE_INTERFACE_(IEnumVARIANT, IUnknown)
        !          1498: {
        !          1499:     BEGIN_INTERFACE
        !          1500: 
        !          1501:     /* IUnknown methods */
        !          1502:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1503:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1504:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1505: 
        !          1506:     /* IEnumVARIANT methods */
        !          1507:     STDMETHOD(Next)(
        !          1508:       THIS_ unsigned long celt, VARIANT FAR* rgvar, unsigned long FAR* pceltFetched) PURE;
        !          1509:     STDMETHOD(Skip)(THIS_ unsigned long celt) PURE;
        !          1510:     STDMETHOD(Reset)(THIS) PURE;
        !          1511:     STDMETHOD(Clone)(THIS_ IEnumVARIANT FAR* FAR* ppenum) PURE;
        !          1512: };
        !          1513: 
        !          1514: typedef IEnumVARIANT FAR* LPENUMVARIANT;
        !          1515: 
        !          1516: 
        !          1517: /*---------------------------------------------------------------------*/
        !          1518: /*                             IDispatch                               */
        !          1519: /*---------------------------------------------------------------------*/
        !          1520: 
        !          1521: 
        !          1522: #undef  INTERFACE
        !          1523: #define INTERFACE IDispatch
        !          1524: 
        !          1525: DECLARE_INTERFACE_(IDispatch, IUnknown)
        !          1526: {
        !          1527:     BEGIN_INTERFACE
        !          1528: 
        !          1529:     /* IUnknown methods */
        !          1530:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1531:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1532:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1533: 
        !          1534:     /* IDispatch methods */
        !          1535:     STDMETHOD(GetTypeInfoCount)(THIS_ unsigned int FAR* pctinfo) PURE;
        !          1536: 
        !          1537:     STDMETHOD(GetTypeInfo)(
        !          1538:       THIS_
        !          1539:       unsigned int itinfo,
        !          1540:       LCID lcid,
        !          1541:       ITypeInfo FAR* FAR* pptinfo) PURE;
        !          1542: 
        !          1543:     STDMETHOD(GetIDsOfNames)(
        !          1544:       THIS_
        !          1545:       REFIID riid,
        !          1546:       char FAR* FAR* rgszNames,
        !          1547:       unsigned int cNames,
        !          1548:       LCID lcid,
        !          1549:       DISPID FAR* rgdispid) PURE;
        !          1550: 
        !          1551:     STDMETHOD(Invoke)(
        !          1552:       THIS_
        !          1553:       DISPID dispidMember,
        !          1554:       REFIID riid,
        !          1555:       LCID lcid,
        !          1556:       unsigned short wFlags,
        !          1557:       DISPPARAMS FAR* pdispparams,
        !          1558:       VARIANT FAR* pvarResult,
        !          1559:       EXCEPINFO FAR* pexcepinfo,
        !          1560:       unsigned int FAR* puArgErr) PURE;
        !          1561: };
        !          1562: 
        !          1563: typedef IDispatch FAR* LPDISPATCH;
        !          1564: 
        !          1565: 
        !          1566: #ifdef WIN32
        !          1567: 
        !          1568: #undef  INTERFACE
        !          1569: #define INTERFACE IDispatchW
        !          1570: 
        !          1571: DECLARE_INTERFACE_(IDispatchW, IUnknown)
        !          1572: {
        !          1573:     BEGIN_INTERFACE
        !          1574: 
        !          1575:     /* IUnknown methods */
        !          1576:     STDMETHOD(QueryInterface)(THIS_ REFIID riid, void FAR* FAR* ppvObj) PURE;
        !          1577:     STDMETHOD_(unsigned long, AddRef)(THIS) PURE;
        !          1578:     STDMETHOD_(unsigned long, Release)(THIS) PURE;
        !          1579: 
        !          1580:     /* IDispatch methods */
        !          1581:     STDMETHOD(GetTypeInfoCount)(THIS_ unsigned int FAR* pctinfo) PURE;
        !          1582: 
        !          1583:     STDMETHOD(GetTypeInfo)(
        !          1584:       THIS_
        !          1585:       unsigned int itinfo,
        !          1586:       LCID lcid,
        !          1587:       ITypeInfoW FAR* FAR* pptinfo) PURE;
        !          1588: 
        !          1589:     STDMETHOD(GetIDsOfNames)(
        !          1590:       THIS_
        !          1591:       REFIID riid,
        !          1592:       WCHAR FAR* FAR* rgszNames,
        !          1593:       unsigned int cNames,
        !          1594:       LCID lcid,
        !          1595:       DISPID FAR* rgdispid) PURE;
        !          1596: 
        !          1597:     STDMETHOD(Invoke)(
        !          1598:       THIS_
        !          1599:       DISPID dispidMember,
        !          1600:       REFIID riid,
        !          1601:       LCID lcid,
        !          1602:       unsigned short wFlags,
        !          1603:       DISPPARAMS FAR* pdispparams,
        !          1604:       VARIANT FAR* pvarResult,
        !          1605:       WEXCEPINFO FAR* pexcepinfo,
        !          1606:       unsigned int FAR* puArgErr) PURE;
        !          1607: };
        !          1608: 
        !          1609: typedef IDispatchW FAR* LPWDISPATCH;
        !          1610: 
        !          1611: #endif /* WIN32 */
        !          1612: 
        !          1613: /* DISPID reserved for the standard "value" property */
        !          1614: #define DISPID_VALUE   0
        !          1615: 
        !          1616: /* DISPID reserved to indicate an "unknown" name */
        !          1617: #define DISPID_UNKNOWN -1
        !          1618: 
        !          1619: /* The following DISPID is reserved to indicate the param
        !          1620:  * that is the right-hand-side (or "put" value) of a PropertyPut
        !          1621:  */
        !          1622: #define DISPID_PROPERTYPUT -3
        !          1623: 
        !          1624: /* DISPID reserved for the standard "NewEnum" method */
        !          1625: #define DISPID_NEWENUM -4
        !          1626: 
        !          1627: /* DISPID reserved for the standard "Evaluate" method */
        !          1628: #define DISPID_EVALUATE        -5
        !          1629: 
        !          1630: 
        !          1631: /*---------------------------------------------------------------------*/
        !          1632: /*                   IDispatch implementation support                  */
        !          1633: /*---------------------------------------------------------------------*/
        !          1634: 
        !          1635: typedef struct FARSTRUCT tagPARAMDATA {
        !          1636:     char FAR* szName;          /* parameter name */
        !          1637:     VARTYPE vt;                        /* parameter type */
        !          1638: } PARAMDATA, FAR* LPPARAMDATA;
        !          1639: 
        !          1640: typedef struct FARSTRUCT tagMETHODDATA {
        !          1641:     char FAR* szName;          /* method name */
        !          1642:     PARAMDATA FAR* ppdata;     /* pointer to an array of PARAMDATAs */
        !          1643:     DISPID dispid;             /* method ID */
        !          1644:     unsigned int iMeth;                /* method index */
        !          1645:     CALLCONV cc;               /* calling convention */
        !          1646:     unsigned int cArgs;                /* count of arguments */
        !          1647:     unsigned short wFlags;     /* same wFlags as on IDispatch::Invoke() */
        !          1648:     VARTYPE vtReturn;
        !          1649: } METHODDATA, FAR* LPMETHODDATA;
        !          1650: 
        !          1651: typedef struct FARSTRUCT tagINTERFACEDATA {
        !          1652:     METHODDATA FAR* pmethdata; /* pointer to an array of METHODDATAs */
        !          1653:     unsigned int cMembers;     /* count of members */
        !          1654: } INTERFACEDATA, FAR* LPINTERFACEDATA;
        !          1655: 
        !          1656: 
        !          1657: 
        !          1658: /* Locate the parameter indicated by the given position, and
        !          1659:  * return it coerced to the given target VARTYPE (vtTarg).
        !          1660:  */
        !          1661: STDAPI
        !          1662: DispGetParam(
        !          1663:     DISPPARAMS FAR* pdispparams,
        !          1664:     unsigned int position,
        !          1665:     VARTYPE vtTarg,
        !          1666:     VARIANT FAR* pvarResult,
        !          1667:     unsigned int FAR* puArgErr);
        !          1668: 
        !          1669: /* Automatic TypeInfo driven implementation of IDispatch::GetIDsOfNames()
        !          1670:  */ 
        !          1671: STDAPI
        !          1672: DispGetIDsOfNames(
        !          1673:     ITypeInfo FAR* ptinfo,
        !          1674:     char FAR* FAR* rgszNames,
        !          1675:     unsigned int cNames,
        !          1676:     DISPID FAR* rgdispid);
        !          1677: 
        !          1678: /* Automatic TypeInfo driven implementation of IDispatch::Invoke()
        !          1679:  */
        !          1680: STDAPI
        !          1681: DispInvoke(
        !          1682:     void FAR* _this,
        !          1683:     ITypeInfo FAR* ptinfo,
        !          1684:     DISPID dispidMember,
        !          1685:     unsigned short wFlags,
        !          1686:     DISPPARAMS FAR* pparams,
        !          1687:     VARIANT FAR* pvarResult,
        !          1688:     EXCEPINFO FAR* pexcepinfo,
        !          1689:     unsigned int FAR* puArgErr);
        !          1690: 
        !          1691: /* Construct a TypeInfo from an interface data description
        !          1692:  */
        !          1693: STDAPI
        !          1694: CreateDispTypeInfo(
        !          1695:     INTERFACEDATA FAR* pidata,
        !          1696:     LCID lcid,
        !          1697:     ITypeInfo FAR* FAR* pptinfo);
        !          1698: 
        !          1699: /* Create an instance of the standard TypeInfo driven IDispatch
        !          1700:  * implementation.
        !          1701:  */
        !          1702: STDAPI
        !          1703: CreateStdDispatch(
        !          1704:     IUnknown FAR* punkOuter,
        !          1705:     void FAR* pvThis,
        !          1706:     ITypeInfo FAR* ptinfo,
        !          1707:     IUnknown FAR* FAR* ppunkStdDisp);
        !          1708: 
        !          1709: 
        !          1710: #ifdef WIN32
        !          1711: 
        !          1712: typedef struct FARSTRUCT tagWPARAMDATA {
        !          1713:     WCHAR FAR* szName;         /* parameter name */
        !          1714:     VARTYPE vt;                        /* parameter type */
        !          1715: } WPARAMDATA, FAR* LPWPARAMDATA;
        !          1716: 
        !          1717: typedef struct FARSTRUCT tagWMETHODDATA {
        !          1718:     WCHAR FAR* szName;         /* method name */
        !          1719:     WPARAMDATA FAR* ppdata;    /* pointer to an array of PARAMDATAs */
        !          1720:     DISPID dispid;             /* method ID */
        !          1721:     unsigned int iMeth;                /* method index */
        !          1722:     CALLCONV cc;               /* calling convention */
        !          1723:     unsigned int cArgs;                /* count of arguments */
        !          1724:     unsigned short wFlags;             /* same wFlags as on IDispatch::Invoke() */
        !          1725:     VARTYPE vtReturn;
        !          1726: } WMETHODDATA, FAR* LPWMETHODDATA;
        !          1727: 
        !          1728: typedef struct FARSTRUCT tagWINTERFACEDATA {
        !          1729:     WMETHODDATA FAR* pmethdata;        /* pointer to an array of METHODDATAs */
        !          1730:     unsigned int cMembers;             /* count of members */
        !          1731: } WINTERFACEDATA, FAR* LPWINTERFACEDATA;
        !          1732: 
        !          1733: 
        !          1734: /* Locate the parameter indicated by the given position, and
        !          1735:  * return it coerced to the given target VARTYPE (vtTarg).
        !          1736:  */
        !          1737: STDAPI
        !          1738: DispGetParamW(
        !          1739:     DISPPARAMS FAR* pdispparams,
        !          1740:     unsigned int position,
        !          1741:     VARTYPE vtTarg,
        !          1742:     VARIANT FAR* pvarResult,
        !          1743:     unsigned int FAR* puArgErr);
        !          1744: 
        !          1745: /* Automatic TypeInfo driven implementation of IDispatch::GetIDsOfNames()
        !          1746:  */ 
        !          1747: STDAPI
        !          1748: DispGetIDsOfNamesW(
        !          1749:     ITypeInfoW FAR* ptinfo,
        !          1750:     WCHAR FAR* FAR* rgszNames,
        !          1751:     unsigned int cNames,
        !          1752:     DISPID FAR* rgdispid);
        !          1753: 
        !          1754: /* Automatic TypeInfo driven implementation of IDispatch::Invoke()
        !          1755:  */
        !          1756: STDAPI
        !          1757: DispInvokeW(
        !          1758:     void FAR* _this,
        !          1759:     ITypeInfoW FAR* ptinfo,
        !          1760:     DISPID dispidMember,
        !          1761:     unsigned short wFlags,
        !          1762:     DISPPARAMS FAR* pparams,
        !          1763:     VARIANT FAR* pvarResult,
        !          1764:     WEXCEPINFO FAR* pexcepinfo,
        !          1765:     unsigned int FAR* puArgErr);
        !          1766: 
        !          1767: /* Construct a TypeInfo from an interface data description
        !          1768:  */
        !          1769: STDAPI
        !          1770: CreateDispTypeInfoW(
        !          1771:     WINTERFACEDATA FAR* pidata,
        !          1772:     LCID lcid,
        !          1773:     ITypeInfoW FAR* FAR* pptinfo);
        !          1774: 
        !          1775: /* Create an instance of the standard TypeInfo driven IDispatch
        !          1776:  * implementation.
        !          1777:  */
        !          1778: STDAPI
        !          1779: CreateStdDispatchW(
        !          1780:     IUnknown FAR* punkOuter,
        !          1781:     void FAR* pvThis,
        !          1782:     ITypeInfoW FAR* ptinfo,
        !          1783:     IUnknown FAR* FAR* ppunkStdDispW);
        !          1784: 
        !          1785: #endif /* WIN32 */
        !          1786: 
        !          1787: 
        !          1788: /*---------------------------------------------------------------------*/
        !          1789: /*                    Active Object Registration API                   */
        !          1790: /*---------------------------------------------------------------------*/
        !          1791: 
        !          1792: STDAPI
        !          1793: RegisterActiveObject(
        !          1794:     IUnknown FAR* punk,
        !          1795:     REFCLSID rclsid,
        !          1796:     void FAR* pvReserved,
        !          1797:     unsigned long FAR* pdwRegister);
        !          1798: 
        !          1799: STDAPI
        !          1800: RevokeActiveObject(
        !          1801:     unsigned long dwRegister,
        !          1802:     void FAR* pvReserved);
        !          1803: 
        !          1804: STDAPI
        !          1805: GetActiveObject(
        !          1806:     REFCLSID rclsid,
        !          1807:     void FAR* pvReserved,
        !          1808:     IUnknown FAR* FAR* ppunk);
        !          1809: 
        !          1810: 
        !          1811: #undef UNION_NAME
        !          1812: 
        !          1813: #endif /* _DISPATCH_H_ */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.