home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / oaidl.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  16.9 KB  |  610 lines

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