|
|
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.