|
|
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_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.