Annotation of mstools/ole20/h/i386/dispatch.h, revision 1.1.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.