home *** CD-ROM | disk | FTP | other *** search
/ Chip 2002 June / Chip_2002-06_cd1.bin / zkuste / cecko / install / devcpp4920.exe / include / oaidl.h < prev    next >
Encoding:
C/C++ Source or Header  |  2001-09-14  |  17.3 KB  |  603 lines

  1. #ifndef _OAIDL_H
  2. #define _OAIDL_H
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #ifdef NONAMELESSUNION
  7. #define __VARIANT_NAME_1 n1
  8. #define __VARIANT_NAME_2 n2
  9. #define __VARIANT_NAME_3 n3
  10. #define __VARIANT_NAME_4 n4
  11. #else
  12. #define __tagVARIANT
  13. #define __VARIANT_NAME_1
  14. #define __VARIANT_NAME_2
  15. #define __VARIANT_NAME_3
  16. #define __VARIANT_NAME_4
  17. #endif
  18. #define DISPID_UNKNOWN (-1)
  19. #define DISPID_VALUE (0)
  20. #define DISPID_PROPERTYPUT (-3)
  21. #define DISPID_NEWENUM (-4)
  22. #define DISPID_EVALUATE (-5)
  23. #define DISPID_CONSTRUCTOR (-6)
  24. #define DISPID_DESTRUCTOR (-7)
  25. #define DISPID_COLLECT (-8)
  26. #define FADF_AUTO (1)
  27. #define FADF_STATIC (2)
  28. #define FADF_EMBEDDED (4)
  29. #define FADF_FIXEDSIZE (16)
  30. #define FADF_BSTR (256)
  31. #define FADF_UNKNOWN (512)
  32. #define FADF_DISPATCH (1024)
  33. #define FADF_VARIANT (2048)
  34. #define FADF_RESERVED (0xf0e8)
  35. #define PARAMFLAG_NONE (0)
  36. #define PARAMFLAG_FIN (1)
  37. #define PARAMFLAG_FOUT (2)
  38. #define PARAMFLAG_FLCID (4)
  39. #define PARAMFLAG_FRETVAL (8)
  40. #define PARAMFLAG_FOPT (16)
  41. #define PARAMFLAG_FHASDEFAULT (32)
  42. #define IDLFLAG_NONE PARAMFLAG_NONE
  43. #define IDLFLAG_FIN PARAMFLAG_FIN
  44. #define IDLFLAG_FOUT PARAMFLAG_FOUT
  45. #define IDLFLAG_FLCID PARAMFLAG_FLCID
  46. #define IDLFLAG_FRETVAL PARAMFLAG_FRETVAL
  47. #define IMPLTYPEFLAG_FDEFAULT 1
  48. #define IMPLTYPEFLAG_FSOURCE 2
  49. #define IMPLTYPEFLAG_FRESTRICTED 4
  50. #define IMPLTYPEFLAG_FDEFAULTVTABLE 8
  51.  
  52. typedef interface ITypeLib *LPTYPELIB;
  53. typedef interface ICreateTypeInfo *LPCREATETYPEINFO;
  54. typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
  55. typedef interface ICreateTypeLib *LPCREATETYPELIB;
  56. typedef interface ICreateTypeLib2 *LPCREATETYPELIB2;
  57. typedef interface ITypeComp *LPTYPECOMP;
  58. typedef interface ITypeInfo *LPTYPEINFO;
  59. typedef interface IErrorInfo *LPERRORINFO;
  60. typedef interface IDispatch *LPDISPATCH;
  61. typedef interface IEnumVARIANT *LPENUMVARIANT;
  62. typedef interface ICreateErrorInfo *LPCREATEERRORINFO;
  63. typedef interface ISupportErrorInfo *LPSUPPORTERRORINFO;
  64. typedef interface IRecordInfo *LPRECORDINFO;
  65.  
  66. extern const IID IID_ITypeLib;
  67. extern const IID IID_ICreateTypeInfo;
  68. extern const IID IID_ICreateTypeInfo2;
  69. extern const IID IID_ICreateTypeLib;
  70. extern const IID IID_ICreateTypeLib2;
  71. extern const IID IID_ITypeInfo;
  72. extern const IID IID_IErrorInfo;
  73. extern const IID IID_IDispatch;
  74. extern const IID IID_IEnumVARIANT;
  75. extern const IID IID_ICreateErrorInfo;
  76. extern const IID IID_ISupportErrorInfo;
  77. extern const IID IID_IRecordInfo;
  78.  
  79. typedef enum tagSYSKIND {
  80.     SYS_WIN16,SYS_WIN32,SYS_MAC
  81. } SYSKIND;
  82. typedef enum tagLIBFLAGS {
  83.     LIBFLAG_FRESTRICTED=1,LIBFLAG_FCONTROL=2,LIBFLAG_FHIDDEN=4,
  84.     LIBFLAG_FHASDISKIMAGE=8
  85. } LIBFLAGS;
  86. typedef struct tagTLIBATTR {
  87.     GUID guid;
  88.     LCID lcid;
  89.     SYSKIND syskind;
  90.     WORD wMajorVerNum;
  91.     WORD wMinorVerNum;
  92.     WORD wLibFlags;
  93. } TLIBATTR,*LPTLIBATTR;
  94. typedef CY CURRENCY;
  95. typedef struct tagSAFEARRAYBOUND {
  96.     ULONG cElements;
  97.     LONG lLbound;
  98. }SAFEARRAYBOUND,*LPSAFEARRAYBOUND;
  99. typedef struct _wireSAFEARR_BSTR
  100. {
  101.     ULONG Size;
  102.     wireBSTR *aBstr;
  103. }SAFEARR_BSTR;
  104. typedef struct _wireSAFEARR_UNKNOWN {
  105.     ULONG Size;
  106.     IUnknown **apUnknown;
  107. }SAFEARR_UNKNOWN;
  108. typedef struct _wireSAFEARR_DISPATCH {
  109.     ULONG Size;
  110.     LPDISPATCH *apDispatch;
  111. }SAFEARR_DISPATCH;
  112. typedef struct _wireSAFEARR_VARIANT {
  113.     ULONG Size;
  114.     struct _wireVARIANT *aVariant;
  115. }SAFEARR_VARIANT;
  116. typedef enum tagSF_TYPE {
  117.     SF_ERROR=VT_ERROR,
  118.     SF_I1=VT_I1,
  119.     SF_I2=VT_I2,
  120.     SF_I4=VT_I4,
  121.     SF_I8=VT_I8,
  122.     SF_BSTR=VT_BSTR,
  123.     SF_UNKNOWN=VT_UNKNOWN,
  124.     SF_DISPATCH=VT_DISPATCH,
  125.     SF_VARIANT=VT_VARIANT
  126. }SF_TYPE;
  127. typedef struct _wireBRECORD  {
  128.     ULONG fFlags;
  129.     ULONG clSize;
  130.     LPRECORDINFO* pRecInfo;
  131.     byte* pRecord;
  132. } *wireBRECORD;
  133. typedef struct _wireSAFEARR_BRECORD {
  134.     ULONG Size;
  135.     wireBRECORD* aRecord;
  136.     } SAFEARR_BRECORD;
  137. typedef struct _wireSAFEARR_HAVEIID {
  138.     ULONG Size;
  139.     IUnknown** apUnknown;
  140.     IID iid;
  141.     } SAFEARR_HAVEIID;
  142. typedef struct _wireSAFEARRAY_UNION {
  143.     ULONG sfType;
  144.     union {
  145.         SAFEARR_BSTR BstrStr;
  146.         SAFEARR_UNKNOWN UnknownStr;
  147.         SAFEARR_DISPATCH DispatchStr;
  148.         SAFEARR_VARIANT VariantStr;
  149.         SAFEARR_BRECORD RecordStr;
  150.         SAFEARR_HAVEIID HaveIidStr;
  151.         BYTE_SIZEDARR ByteStr;
  152.         WORD_SIZEDARR WordStr;
  153.         DWORD_SIZEDARR LongStr;
  154.         HYPER_SIZEDARR HyperStr;
  155.     }u;
  156. }SAFEARRAYUNION;
  157. typedef struct _wireSAFEARRAY {
  158.     USHORT cDims;
  159.     USHORT fFeatures;
  160.     ULONG cbElements;
  161.     ULONG cLocks;
  162.     SAFEARRAYUNION uArrayStructs;
  163.     SAFEARRAYBOUND rgsabound[1];
  164. }*wireSAFEARRAY;
  165. typedef wireSAFEARRAY *wirePSAFEARRAY;
  166. typedef struct tagSAFEARRAY {
  167.     USHORT cDims;
  168.     USHORT fFeatures;
  169.     ULONG cbElements;
  170.     ULONG cLocks;
  171.     PVOID pvData;
  172.     SAFEARRAYBOUND rgsabound[1];
  173. }SAFEARRAY,*LPSAFEARRAY;
  174. typedef struct tagVARIANT {
  175.   _ANONYMOUS_UNION union {
  176.     struct __tagVARIANT {
  177.     VARTYPE vt;
  178.     WORD wReserved1;
  179.     WORD wReserved2;
  180.     WORD wReserved3;
  181.     _ANONYMOUS_UNION union {
  182.         long lVal;
  183.         unsigned char bVal;
  184.         short iVal;
  185.         float fltVal;
  186.         double dblVal;
  187.         VARIANT_BOOL  boolVal;
  188.         SCODE scode;
  189.         CY cyVal;
  190.         DATE date;
  191.         BSTR bstrVal;
  192.         IUnknown *punkVal;
  193.         LPDISPATCH pdispVal;
  194.         SAFEARRAY *parray;
  195.         unsigned char *pbVal;
  196.         short *piVal;
  197.         long *plVal;
  198.         float *pfltVal;
  199.         double *pdblVal;
  200.         VARIANT_BOOL *pboolVal;
  201.         _VARIANT_BOOL  *pbool;
  202.         SCODE *pscode;
  203.         CY *pcyVal;
  204.         DATE *pdate;
  205.         BSTR *pbstrVal;
  206.         IUnknown **ppunkVal;
  207.         LPDISPATCH *ppdispVal;
  208.         SAFEARRAY **pparray;
  209.         struct tagVARIANT *pvarVal;
  210.         void *byref;
  211.         CHAR cVal;
  212.         USHORT uiVal;
  213.         ULONG ulVal;
  214.         INT intVal;
  215.         UINT uintVal;
  216.         DECIMAL *pdecVal;
  217.         CHAR  *pcVal;
  218.         USHORT  *puiVal;
  219.         ULONG  *pulVal;
  220.         INT  *pintVal;
  221.         UINT  *puintVal;
  222.         _ANONYMOUS_STRUCT struct {
  223.             PVOID pvRecord;
  224.             struct IRecordInfo *pRecInfo;
  225.         } __VARIANT_NAME_4;
  226.     } __VARIANT_NAME_3;
  227.     } __VARIANT_NAME_2;
  228.     DECIMAL decVal;
  229.   } __VARIANT_NAME_1;
  230. } VARIANT,*LPVARIANT;
  231. typedef VARIANT VARIANTARG;
  232. typedef VARIANT *LPVARIANTARG;
  233. typedef struct _wireVARIANT {
  234.     DWORD clSize;
  235.     DWORD rpcReserved;
  236.     USHORT vt;
  237.     USHORT wReserved1;
  238.     USHORT wReserved2;
  239.     USHORT wReserved3;
  240.     _ANONYMOUS_UNION union {
  241.         LONG lVal;
  242.         BYTE bVal;
  243.         SHORT iVal;
  244.         FLOAT fltVal;
  245.         DOUBLE dblVal;
  246.         VARIANT_BOOL boolVal;
  247.         SCODE scode;
  248.         CY cyVal;
  249.         DATE date;
  250.         wireBSTR bstrVal;
  251.         IUnknown *punkVal;
  252.         LPDISPATCH pdispVal;
  253.         wirePSAFEARRAY parray;
  254.         wireBRECORD brecVal;
  255.         BYTE *pbVal;
  256.         SHORT *piVal;
  257.         LONG *plVal;
  258.         FLOAT *pfltVal;
  259.         DOUBLE *pdblVal;
  260.         VARIANT_BOOL *pboolVal;
  261.         SCODE *pscode;
  262.         CY *pcyVal;
  263.         DATE *pdate;
  264.         wireBSTR *pbstrVal;
  265.         IUnknown **ppunkVal;
  266.         LPDISPATCH *ppdispVal;
  267.         wirePSAFEARRAY *pparray;
  268.         struct _wireVARIANT *pvarVal;
  269.         CHAR cVal;
  270.         USHORT uiVal;
  271.         ULONG ulVal;
  272.         INT intVal;
  273.         UINT uintVal;
  274.         DECIMAL decVal;
  275.         DECIMAL *pdecVal;
  276.         CHAR *pcVal;
  277.         USHORT *puiVal;
  278.         ULONG *pulVal;
  279.         INT *pintVal;
  280.         UINT *puintVal;
  281.     } DUMMYUNIONNAME;
  282. } *wireVARIANT;  
  283. typedef LONG DISPID;
  284. typedef DISPID MEMBERID;
  285. typedef DWORD HREFTYPE;
  286. typedef enum tagTYPEKIND {
  287.     TKIND_ENUM,TKIND_RECORD,TKIND_MODULE,TKIND_INTERFACE,TKIND_DISPATCH,
  288.     TKIND_COCLASS,TKIND_ALIAS,TKIND_UNION,TKIND_MAX
  289. }TYPEKIND;
  290. typedef struct tagTYPEDESC {
  291.     _ANONYMOUS_UNION union {
  292.         struct tagTYPEDESC *lptdesc;
  293.         struct tagARRAYDESC *lpadesc;
  294.         HREFTYPE hreftype;
  295.     } DUMMYUNIONNAME;
  296.     VARTYPE vt;
  297. }TYPEDESC;
  298. typedef struct tagARRAYDESC {
  299.     TYPEDESC tdescElem;
  300.     USHORT cDims;
  301.     SAFEARRAYBOUND rgbounds[1];
  302. }ARRAYDESC;
  303. typedef struct tagPARAMDESCEX {
  304.     ULONG cBytes;
  305.     VARIANTARG varDefaultValue;
  306. }PARAMDESCEX,*LPPARAMDESCEX;
  307. typedef struct tagPARAMDESC {
  308.     LPPARAMDESCEX pparamdescex;
  309.     USHORT wParamFlags;
  310. }PARAMDESC,*LPPARAMDESC;
  311. typedef struct tagIDLDESC {
  312.     ULONG dwReserved;
  313.     USHORT wIDLFlags;
  314. }IDLDESC,*LPIDLDESC;
  315. typedef struct tagELEMDESC {
  316.     TYPEDESC tdesc;
  317.     _ANONYMOUS_UNION union {
  318.         IDLDESC idldesc;
  319.         PARAMDESC paramdesc;
  320.     } DUMMYUNIONNAME;
  321. } ELEMDESC,*LPELEMDESC;
  322. typedef struct tagTYPEATTR {
  323.     GUID guid;
  324.     LCID lcid;
  325.     DWORD dwReserved;
  326.     MEMBERID memidConstructor;
  327.     MEMBERID memidDestructor;
  328.     LPOLESTR lpstrSchema;
  329.     ULONG cbSizeInstance;
  330.     TYPEKIND typekind;
  331.     WORD cFuncs;
  332.     WORD cVars;
  333.     WORD cImplTypes;
  334.     WORD cbSizeVft;
  335.     WORD cbAlignment;
  336.     WORD wTypeFlags;
  337.     WORD wMajorVerNum;
  338.     WORD wMinorVerNum;
  339.     TYPEDESC tdescAlias;
  340.     IDLDESC idldescType;
  341. }TYPEATTR,*LPTYPEATTR;
  342. typedef struct tagDISPPARAMS {
  343.     VARIANTARG *rgvarg;
  344.     DISPID *rgdispidNamedArgs;
  345.     UINT cArgs;
  346.     UINT cNamedArgs;
  347. }DISPPARAMS;
  348. typedef struct tagEXCEPINFO {
  349.     WORD wCode;
  350.     WORD wReserved;
  351.     BSTR bstrSource;
  352.     BSTR bstrDescription;
  353.     BSTR bstrHelpFile;
  354.     DWORD dwHelpContext;
  355.     PVOID pvReserved;
  356.     HRESULT(__stdcall * pfnDeferredFillIn)(struct tagEXCEPINFO*);
  357.     SCODE scode;
  358. } EXCEPINFO,*LPEXCEPINFO;
  359. typedef enum tagCALLCONV {
  360.     CC_FASTCALL,CC_CDECL,CC_MSCPASCAL,CC_PASCAL=CC_MSCPASCAL,
  361.     CC_MACPASCAL,CC_STDCALL,CC_FPFASTCALL,CC_SYSCALL,CC_MPWCDECL,
  362.     CC_MPWPASCAL,CC_MAX=CC_MPWPASCAL
  363. }CALLCONV;
  364. typedef enum tagFUNCKIND {
  365.     FUNC_VIRTUAL,FUNC_PUREVIRTUAL,FUNC_NONVIRTUAL,
  366.     FUNC_STATIC,FUNC_DISPATCH
  367. }FUNCKIND;
  368. typedef enum tagINVOKEKIND {
  369.     INVOKE_FUNC=1,INVOKE_PROPERTYGET,INVOKE_PROPERTYPUT=4,
  370.     INVOKE_PROPERTYPUTREF=8
  371. }INVOKEKIND;
  372. typedef struct tagFUNCDESC {
  373.     MEMBERID memid;
  374.     SCODE *lprgscode;
  375.     ELEMDESC *lprgelemdescParam;
  376.     FUNCKIND funckind;
  377.     INVOKEKIND invkind;
  378.     CALLCONV callconv;
  379.     SHORT cParams;
  380.     SHORT cParamsOpt;
  381.     SHORT oVft;
  382.     SHORT cScodes;
  383.     ELEMDESC elemdescFunc;
  384.     WORD wFuncFlags;
  385. }FUNCDESC,*LPFUNCDESC;
  386. typedef enum tagVARKIND {
  387.     VAR_PERINSTANCE,VAR_STATIC,VAR_CONST,VAR_DISPATCH
  388. } VARKIND;
  389. typedef struct tagVARDESC {
  390.     MEMBERID memid;
  391.     LPOLESTR lpstrSchema;
  392.     _ANONYMOUS_UNION union {
  393.         ULONG oInst;
  394.         VARIANT *lpvarValue;
  395.     } DUMMYUNIONNAME;
  396.     ELEMDESC elemdescVar;
  397.     WORD wVarFlags;
  398.     VARKIND varkind;
  399. } VARDESC,*LPVARDESC;
  400. typedef enum tagTYPEFLAGS {
  401.     TYPEFLAG_FAPPOBJECT=1,TYPEFLAG_FCANCREATE=2,TYPEFLAG_FLICENSED=4,
  402.     TYPEFLAG_FPREDECLID=8,TYPEFLAG_FHIDDEN=16,TYPEFLAG_FCONTROL=32,
  403.     TYPEFLAG_FDUAL=64,TYPEFLAG_FNONEXTENSIBLE=128,
  404.     TYPEFLAG_FOLEAUTOMATION=256,TYPEFLAG_FRESTRICTED=512,
  405.     TYPEFLAG_FAGGREGATABLE=1024,TYPEFLAG_FREPLACEABLE=2048,
  406.     TYPEFLAG_FDISPATCHABLE=4096,TYPEFLAG_FREVERSEBIND=8192
  407. } TYPEFLAGS;
  408. typedef enum tagFUNCFLAGS {
  409.     FUNCFLAG_FRESTRICTED=1,FUNCFLAG_FSOURCE=2,FUNCFLAG_FBINDABLE=4,
  410.     FUNCFLAG_FREQUESTEDIT=8,FUNCFLAG_FDISPLAYBIND=16,FUNCFLAG_FDEFAULTBIND=32,
  411.     FUNCFLAG_FHIDDEN=64,FUNCFLAG_FUSESGETLASTERROR=128,FUNCFLAG_FDEFAULTCOLLELEM=256,
  412.     FUNCFLAG_FUIDEFAULT=512,FUNCFLAG_FNONBROWSABLE=1024,FUNCFLAG_FREPLACEABLE=2048,
  413.     FUNCFLAG_FIMMEDIATEBIND=4096
  414. } FUNCFLAGS;
  415. typedef enum tagVARFLAGS {
  416.     VARFLAG_FREADONLY=1,VARFLAG_FSOURCE=2,VARFLAG_FBINDABLE=4,VARFLAG_FREQUESTEDIT=8,
  417.     VARFLAG_FDISPLAYBIND=16,VARFLAG_FDEFAULTBIND=32,VARFLAG_FHIDDEN=64,VARFLAG_FRESTRICTED=128,
  418.     VARFLAG_FDEFAULTCOLLELEM=256,VARFLAG_FUIDEFAULT=512,VARFLAG_FNONBROWSABLE=1024,
  419.     VARFLAG_FREPLACEABLE=2048,VARFLAG_FIMMEDIATEBIND=4096
  420. } VARFLAGS;
  421. typedef struct tagCLEANLOCALSTORAGE {
  422.     IUnknown *pInterface;
  423.     PVOID pStorage;
  424.     DWORD flags;
  425. } CLEANLOCALSTORAGE;
  426. typedef struct tagCUSTDATAITEM {
  427.     GUID guid;
  428.     VARIANTARG varValue;
  429. } CUSTDATAITEM,*LPCUSTDATAITEM;
  430. typedef struct tagCUSTDATA {
  431.     DWORD cCustData;
  432.     LPCUSTDATAITEM prgCustData;
  433. } CUSTDATA,*LPCUSTDATA;
  434.  
  435. typedef enum tagDESCKIND {
  436.         DESCKIND_NONE=0,DESCKIND_FUNCDESC=DESCKIND_NONE+1,
  437.         DESCKIND_VARDESC=DESCKIND_FUNCDESC+1,DESCKIND_TYPECOMP=DESCKIND_VARDESC+1,
  438.         DESCKIND_IMPLICITAPPOBJ=DESCKIND_TYPECOMP+1,
  439.         DESCKIND_MAX=DESCKIND_IMPLICITAPPOBJ+1
  440. } DESCKIND;
  441.  
  442. typedef union tagBINDPTR {
  443.         LPFUNCDESC lpfuncdesc;
  444.         LPVARDESC lpvardesc;
  445.         LPTYPECOMP lptcomp;
  446. } BINDPTR,*LPBINDPTR;
  447.  
  448. #undef INTERFACE
  449. #define INTERFACE IDispatch
  450. DECLARE_INTERFACE_(IDispatch,IUnknown)
  451. {
  452.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  453.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  454.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  455.     STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
  456.     STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
  457.     STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*) PURE;
  458.     STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
  459. };
  460.  
  461. #undef INTERFACE
  462. #define INTERFACE IEnumVARIANT
  463. DECLARE_INTERFACE_(IEnumVARIANT,IUnknown)
  464. {
  465.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  466.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  467.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  468.     STDMETHOD(Next)(THIS_ ULONG,VARIANT*,ULONG*) PURE;
  469.     STDMETHOD(Skip)(THIS_ ULONG) PURE;
  470.     STDMETHOD(Reset)(THIS) PURE;
  471.     STDMETHOD(Clone)(THIS_ IEnumVARIANT**) PURE;
  472. };
  473.  
  474. #undef INTERFACE
  475. #define INTERFACE ITypeComp
  476. DECLARE_INTERFACE_(ITypeComp,IUnknown)
  477. {
  478.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  479.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  480.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  481.     STDMETHOD(Bind)(THIS_ LPOLESTR,ULONG,WORD,LPTYPEINFO*,DESCKIND*,LPBINDPTR) PURE;
  482.     STDMETHOD(BindType)(THIS_ LPOLESTR,ULONG,LPTYPEINFO*,LPTYPECOMP*) PURE;
  483. };
  484.  
  485. #undef INTERFACE
  486. #define INTERFACE ITypeInfo
  487. DECLARE_INTERFACE_(ITypeInfo,IUnknown)
  488. {
  489.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  490.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  491.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  492.     STDMETHOD(GetTypeAttr)(THIS_ LPTYPEATTR*) PURE;
  493.     STDMETHOD(GetTypeComp)(THIS_ LPTYPECOMP*) PURE;
  494.     STDMETHOD(GetFuncDesc)(THIS_ UINT,LPFUNCDESC*) PURE;
  495.     STDMETHOD(GetVarDesc)(THIS_ UINT,LPVARDESC*) PURE;
  496.     STDMETHOD(GetNames)(THIS_ MEMBERID,BSTR*,UINT,UINT*) PURE;
  497.     STDMETHOD(GetRefTypeOfImplType)(THIS_ UINT,HREFTYPE*) PURE;
  498.     STDMETHOD(GetImplTypeFlags)(THIS_ UINT,INT*) PURE;
  499.     STDMETHOD(GetIDsOfNames)(THIS_ LPOLESTR*,UINT,MEMBERID*) PURE;
  500.     STDMETHOD(Invoke)(THIS_ PVOID,MEMBERID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
  501.     STDMETHOD(GetDocumentation)(THIS_ MEMBERID,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
  502.     STDMETHOD(GetDllEntry)(THIS_ MEMBERID,INVOKEKIND,BSTR*,BSTR*,WORD*) PURE;
  503.     STDMETHOD(GetRefTypeInfo)(THIS_ HREFTYPE,LPTYPEINFO*) PURE;
  504.     STDMETHOD(AddressOfMember)(THIS_ MEMBERID,INVOKEKIND,PVOID*) PURE;
  505.     STDMETHOD(CreateInstance)(THIS_ LPUNKNOWN,REFIID,PVOID*) PURE;
  506.     STDMETHOD(GetMops)(THIS_ MEMBERID,BSTR*) PURE;
  507.     STDMETHOD(GetContainingTypeLib)(THIS_ LPTYPELIB*,UINT*) PURE;
  508.     STDMETHOD_(void,ReleaseTypeAttr)(THIS_ LPTYPEATTR) PURE;
  509.     STDMETHOD_(void,ReleaseFuncDesc)(THIS_ LPFUNCDESC) PURE;
  510.     STDMETHOD_(void,ReleaseVarDesc)(THIS_ LPVARDESC) PURE;
  511. };
  512.  
  513. #undef INTERFACE
  514. #define INTERFACE ITypeLib
  515. DECLARE_INTERFACE_(ITypeLib,IUnknown)
  516. {
  517.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  518.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  519.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  520.     STDMETHOD_(UINT,GetTypeInfoCount)(THIS) PURE;
  521.     STDMETHOD(GetTypeInfo)(THIS_ UINT,ITypeInfo**) PURE;
  522.     STDMETHOD(GetTypeInfoType)(THIS_ UINT,TYPEKIND*) PURE;
  523.     STDMETHOD(GetTypeInfoOfGuid)(THIS_ REFGUID,ITypeInfo**) PURE;
  524.     STDMETHOD(GetLibAttr)(THIS_ TLIBATTR**) PURE;
  525.     STDMETHOD(GetTypeComp)(THIS_ ITypeComp*) PURE;
  526.     STDMETHOD(GetDocumentation)(THIS_ INT,BSTR*,BSTR*,DWORD*,BSTR*) PURE;
  527.     STDMETHOD(IsName)(THIS_ LPOLESTR,ULONG,BOOL*) PURE;
  528.     STDMETHOD(FindName)(THIS_ LPOLESTR,ULONG,ITypeInfo**,MEMBERID*,USHORT*) PURE;
  529.     STDMETHOD_(void,ReleaseTLibAttr)(THIS_ TLIBATTR*) PURE;
  530. };
  531.  
  532. EXTERN_C const IID IID_IErrorInfo;
  533. #undef INTERFACE
  534. #define INTERFACE IErrorInfo
  535. DECLARE_INTERFACE_(IErrorInfo, IUnknown)
  536. {
  537.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  538.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  539.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  540.     STDMETHOD(GetGUID)(THIS_ GUID*) PURE;
  541.     STDMETHOD(GetSource)(THIS_ BSTR*) PURE;
  542.     STDMETHOD(GetDescription)(THIS_ BSTR*) PURE;
  543.     STDMETHOD(GetHelpFile)(THIS_ BSTR*) PURE;
  544.     STDMETHOD(GetHelpContext)(THIS_ DWORD*) PURE;
  545. };
  546.  
  547. EXTERN_C const IID IID_ICreateErrorInfo;
  548. #undef INTERFACE
  549. #define INTERFACE ICreateErrorInfo
  550. DECLARE_INTERFACE_(ICreateErrorInfo, IUnknown)
  551. {
  552.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*)PURE;
  553.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  554.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  555.     STDMETHOD(SetGUID)(THIS_ REFGUID) PURE;
  556.     STDMETHOD(SetSource)(THIS_ LPOLESTR) PURE;
  557.     STDMETHOD(SetDescription)(THIS_ LPOLESTR) PURE;
  558.     STDMETHOD(SetHelpFile)(THIS_ LPOLESTR) PURE;
  559.     STDMETHOD(SetHelpContext)(THIS_ DWORD) PURE;
  560. };
  561.  
  562. EXTERN_C const IID IID_ISupportErrorInfo;
  563. #undef INTERFACE
  564. #define INTERFACE ISupportErrorInfo
  565. DECLARE_INTERFACE_(ISupportErrorInfo, IUnknown)
  566. {
  567.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  568.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  569.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  570.     STDMETHOD(InterfaceSupportsErrorInfo)(THIS_ REFIID) PURE;
  571. };
  572.  
  573. EXTERN_C const IID IID_IRecordInfo;
  574. #undef INTERFACE
  575. #define INTERFACE IRecordInfo
  576. DECLARE_INTERFACE_(IRecordInfo, IUnknown)
  577. {
  578.     STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
  579.     STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  580.     STDMETHOD_(ULONG,Release)(THIS) PURE;
  581.     STDMETHOD(RecordInit)(THIS_ PVOID) PURE;
  582.     STDMETHOD(RecordClear)(THIS_ PVOID) PURE;
  583.     STDMETHOD(RecordCopy)(THIS_ PVOID, PVOID) PURE;
  584.     STDMETHOD(GetGuid)(THIS_ GUID*) PURE;
  585.     STDMETHOD(GetName)(THIS_ BSTR*) PURE;
  586.     STDMETHOD(GetSize)(THIS_ ULONG*) PURE;
  587.     STDMETHOD(GetTypeInfo)(THIS_ ITypeInfo**) PURE;
  588.     STDMETHOD(GetField)(THIS_ PVOID,LPCOLESTR,VARIANT*) PURE;
  589.     STDMETHOD(GetFieldNoCopy)(THIS_ PVOID,LPCOLESTR,VARIANT*,PVOID*) PURE;
  590.     STDMETHOD(PutField )(THIS_ ULONG,PVOID,LPCOLESTR, VARIANT*) PURE;
  591.     STDMETHOD(PutFieldNoCopy)(THIS_ ULONG,PVOID,LPCOLESTR,VARIANT*) PURE;
  592.     STDMETHOD(GetFieldNames)(THIS_ ULONG*,BSTR*) PURE;
  593.     STDMETHOD_(BOOL,IsMatchingType)(THIS_ THIS) PURE;
  594.     STDMETHOD_(PVOID,RecordCreate)(THIS) PURE;
  595.     STDMETHOD(RecordCreateCopy)(THIS_ PVOID,PVOID*) PURE;
  596.     STDMETHOD(RecordDestroy )(THIS_ PVOID) PURE;
  597. };
  598.  
  599. #ifdef __cplusplus
  600. }
  601. #endif
  602. #endif
  603.