summaryrefslogtreecommitdiffstats
path: root/public/sdk/inc/chicago/oaidl.idl
diff options
context:
space:
mode:
Diffstat (limited to 'public/sdk/inc/chicago/oaidl.idl')
-rw-r--r--public/sdk/inc/chicago/oaidl.idl1751
1 files changed, 1751 insertions, 0 deletions
diff --git a/public/sdk/inc/chicago/oaidl.idl b/public/sdk/inc/chicago/oaidl.idl
new file mode 100644
index 000000000..7734051ed
--- /dev/null
+++ b/public/sdk/inc/chicago/oaidl.idl
@@ -0,0 +1,1751 @@
+//+---------------------------------------------------------------------------
+//
+// Microsoft Windows
+// Copyright (C) Microsoft Corporation, 1992 - 1996.
+//
+// File: oaidl.idl
+//
+//----------------------------------------------------------------------------
+
+cpp_quote("//+-------------------------------------------------------------------------")
+cpp_quote("//")
+cpp_quote("// Microsoft Windows")
+cpp_quote("// Copyright (C) Microsoft Corporation, 1992 - 1996.")
+cpp_quote("//")
+cpp_quote("//--------------------------------------------------------------------------")
+
+#ifndef DO_NO_IMPORTS
+import "objidl.idl";
+#endif
+
+interface ICreateTypeInfo;
+interface ICreateTypeInfo2;
+interface ICreateTypeLib;
+interface ICreateTypeLib2;
+interface IDispatch;
+interface IEnumVARIANT;
+interface ITypeComp;
+interface ITypeInfo;
+interface ITypeInfo2;
+interface ITypeLib;
+interface ITypeLib2;
+interface ITypeChangeEvents;
+interface IErrorInfo;
+interface ICreateErrorInfo;
+interface ISupportErrorInfo;
+
+
+[
+ version(1.0), pointer_default(unique)
+]
+
+interface IOleAutomationTypes
+{
+
+typedef CY CURRENCY;
+
+// #########################################################################
+// SAFEARRAY
+// #########################################################################
+
+typedef struct tagSAFEARRAYBOUND {
+ ULONG cElements;
+ LONG lLbound;
+} SAFEARRAYBOUND, * LPSAFEARRAYBOUND;
+
+cpp_quote("#if defined(_OLEAUT32_)")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+// Forward references.
+typedef [unique] struct _wireVARIANT * wireVARIANT;
+
+typedef struct _wireSAFEARR_BSTR {
+ ULONG Size;
+ [size_is(Size), ref] wireBSTR * aBstr;
+} SAFEARR_BSTR;
+
+typedef struct _wireSAFEARR_UNKNOWN {
+ ULONG Size;
+ [size_is(Size), ref] IUnknown ** apUnknown;
+} SAFEARR_UNKNOWN;
+
+typedef struct _wireSAFEARR_DISPATCH {
+ ULONG Size;
+ [size_is(Size), ref] IDispatch ** apDispatch;
+} SAFEARR_DISPATCH;
+
+typedef struct _wireSAFEARR_VARIANT {
+ ULONG Size;
+ [size_is(Size), ref] wireVARIANT * aVariant;
+} SAFEARR_VARIANT;
+
+typedef [v1_enum] enum tagSF_TYPE {
+ SF_ERROR = VT_ERROR,
+ SF_I1 = VT_I1,
+ SF_I2 = VT_I2,
+ SF_I4 = VT_I4,
+ SF_I8 = VT_I8,
+ SF_BSTR = VT_BSTR,
+ SF_UNKNOWN = VT_UNKNOWN,
+ SF_DISPATCH = VT_DISPATCH,
+ SF_VARIANT = VT_VARIANT
+} SF_TYPE;
+
+typedef union _wireSAFEARRAY_UNION switch(ULONG sfType) u {
+ case SF_BSTR: SAFEARR_BSTR BstrStr;
+ case SF_UNKNOWN: SAFEARR_UNKNOWN UnknownStr;
+ case SF_DISPATCH: SAFEARR_DISPATCH DispatchStr;
+ case SF_VARIANT: SAFEARR_VARIANT VariantStr;
+ case SF_I1: BYTE_SIZEDARR ByteStr;
+ case SF_I2: WORD_SIZEDARR WordStr;
+ case SF_I4: DWORD_SIZEDARR LongStr;
+ case SF_I8: HYPER_SIZEDARR HyperStr;
+ default: ; // error
+} SAFEARRAYUNION;
+
+typedef [unique] struct _wireSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ SAFEARRAYUNION uArrayStructs;
+ [size_is(cDims)] SAFEARRAYBOUND rgsabound[];
+} * wireSAFEARRAY;
+
+typedef [unique] wireSAFEARRAY * wirePSAFEARRAY;
+
+cpp_quote("#endif /* _OLEAUT32_ */")
+
+typedef struct tagSAFEARRAY {
+ USHORT cDims;
+ USHORT fFeatures;
+ ULONG cbElements;
+ ULONG cLocks;
+ PVOID pvData;
+ SAFEARRAYBOUND rgsabound[];
+} SAFEARRAY;
+
+typedef [wire_marshal(wirePSAFEARRAY)] SAFEARRAY * LPSAFEARRAY;
+
+const USHORT FADF_AUTO = 0x0001; /* array is allocated on the stack */
+const USHORT FADF_STATIC = 0x0002; /* array is staticly allocated */
+const USHORT FADF_EMBEDDED = 0x0004; /* array is embedded in a structure */
+const USHORT FADF_FIXEDSIZE = 0x0010; /* may not be resized or reallocated */
+const USHORT FADF_BSTR = 0x0100; /* an array of BSTRs */
+const USHORT FADF_UNKNOWN = 0x0200; /* an array of IUnknown* */
+const USHORT FADF_DISPATCH = 0x0400; /* an array of IDispatch* */
+const USHORT FADF_VARIANT = 0x0800; /* an array of VARIANTs */
+const USHORT FADF_RESERVED = 0xF0E8; /* reserved bits */
+
+
+// #########################################################################
+// VARIANT
+// #########################################################################
+
+cpp_quote("/* VARIANT STRUCTURE")
+cpp_quote(" *")
+cpp_quote(" * VARTYPE vt;")
+cpp_quote(" * WORD wReserved1;")
+cpp_quote(" * WORD wReserved2;")
+cpp_quote(" * WORD wReserved3;")
+cpp_quote(" * union {")
+cpp_quote(" * LONG VT_I4")
+cpp_quote(" * BYTE VT_UI1")
+cpp_quote(" * SHORT VT_I2")
+cpp_quote(" * FLOAT VT_R4")
+cpp_quote(" * DOUBLE VT_R8")
+cpp_quote(" * VARIANT_BOOL VT_BOOL")
+cpp_quote(" * SCODE VT_ERROR")
+cpp_quote(" * CY VT_CY")
+cpp_quote(" * DATE VT_DATE")
+cpp_quote(" * BSTR VT_BSTR")
+cpp_quote(" * IUnknown * VT_UNKNOWN")
+cpp_quote(" * IDispatch * VT_DISPATCH")
+cpp_quote(" * SAFEARRAY * VT_ARRAY")
+cpp_quote(" * BYTE * VT_BYREF|VT_UI1")
+cpp_quote(" * SHORT * VT_BYREF|VT_I2")
+cpp_quote(" * LONG * VT_BYREF|VT_I4")
+cpp_quote(" * FLOAT * VT_BYREF|VT_R4")
+cpp_quote(" * DOUBLE * VT_BYREF|VT_R8")
+cpp_quote(" * VARIANT_BOOL * VT_BYREF|VT_BOOL")
+cpp_quote(" * SCODE * VT_BYREF|VT_ERROR")
+cpp_quote(" * CY * VT_BYREF|VT_CY")
+cpp_quote(" * DATE * VT_BYREF|VT_DATE")
+cpp_quote(" * BSTR * VT_BYREF|VT_BSTR")
+cpp_quote(" * IUnknown ** VT_BYREF|VT_UNKNOWN")
+cpp_quote(" * IDispatch ** VT_BYREF|VT_DISPATCH")
+cpp_quote(" * SAFEARRAY ** VT_BYREF|VT_ARRAY")
+cpp_quote(" * VARIANT * VT_BYREF|VT_VARIANT")
+cpp_quote(" * PVOID VT_BYREF (Generic ByRef)")
+cpp_quote(" * CHAR VT_I1")
+cpp_quote(" * USHORT VT_UI2")
+cpp_quote(" * ULONG VT_UI4")
+cpp_quote(" * INT VT_INT")
+cpp_quote(" * UINT VT_UINT")
+cpp_quote(" * DECIMAL * VT_BYREF|VT_DECIMAL")
+cpp_quote(" * CHAR * VT_BYREF|VT_I1")
+cpp_quote(" * USHORT * VT_BYREF|VT_UI2")
+cpp_quote(" * ULONG * VT_BYREF|VT_UI4")
+cpp_quote(" * INT * VT_BYREF|VT_INT")
+cpp_quote(" * UINT * VT_BYREF|VT_UINT")
+cpp_quote(" * }")
+cpp_quote(" */")
+
+cpp_quote("#if __STDC__ || defined(NONAMELESSUNION)")
+cpp_quote("#define __VARIANT_NAME_1 n1")
+cpp_quote("#define __VARIANT_NAME_2 n2")
+cpp_quote("#define __VARIANT_NAME_3 n3")
+cpp_quote("#else")
+cpp_quote("#define __tagVARIANT")
+cpp_quote("#define __VARIANT_NAME_1")
+cpp_quote("#define __VARIANT_NAME_2")
+cpp_quote("#define __VARIANT_NAME_3")
+cpp_quote("#endif")
+
+typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
+
+struct tagVARIANT {
+ union {
+ struct __tagVARIANT {
+ VARTYPE vt;
+ WORD wReserved1;
+ WORD wReserved2;
+ WORD wReserved3;
+ union {
+ LONG lVal; /* VT_I4 */
+ BYTE bVal; /* VT_UI1 */
+ SHORT iVal; /* VT_I2 */
+ FLOAT fltVal; /* VT_R4 */
+ DOUBLE dblVal; /* VT_R8 */
+ VARIANT_BOOL boolVal; /* VT_BOOL */
+ _VARIANT_BOOL bool; /* (obsolete) */
+ SCODE scode; /* VT_ERROR */
+ CY cyVal; /* VT_CY */
+ DATE date; /* VT_DATE */
+ BSTR bstrVal; /* VT_BSTR */
+ IUnknown * punkVal; /* VT_UNKNOWN */
+ IDispatch * pdispVal; /* VT_DISPATCH */
+ SAFEARRAY * parray; /* VT_ARRAY */
+ BYTE * pbVal; /* VT_BYREF|VT_UI1 */
+ SHORT * piVal; /* VT_BYREF|VT_I2 */
+ LONG * plVal; /* VT_BYREF|VT_I4 */
+ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
+ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
+ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
+ _VARIANT_BOOL *pbool; /* (obsolete) */
+ SCODE * pscode; /* VT_BYREF|VT_ERROR */
+ CY * pcyVal; /* VT_BYREF|VT_CY */
+ DATE * pdate; /* VT_BYREF|VT_DATE */
+ BSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
+ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
+ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
+ SAFEARRAY ** pparray; /* VT_BYREF|VT_ARRAY */
+ VARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
+ PVOID byref; /* Generic ByRef */
+ CHAR cVal; /* VT_I1 */
+ USHORT uiVal; /* VT_UI2 */
+ ULONG ulVal; /* VT_UI4 */
+ INT intVal; /* VT_INT */
+ UINT uintVal; /* VT_UINT */
+ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
+ CHAR * pcVal; /* VT_BYREF|VT_I1 */
+ USHORT * puiVal; /* VT_BYREF|VT_UI2 */
+ ULONG * pulVal; /* VT_BYREF|VT_UI4 */
+ INT * pintVal; /* VT_BYREF|VT_INT */
+ UINT * puintVal; /* VT_BYREF|VT_UINT */
+ } __VARIANT_NAME_3;
+ } __VARIANT_NAME_2;
+
+ DECIMAL decVal;
+ } __VARIANT_NAME_1;
+};
+
+typedef VARIANT * LPVARIANT;
+typedef VARIANT VARIANTARG;
+typedef VARIANT * LPVARIANTARG;
+
+cpp_quote("#if defined(_OLEAUT32_)")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+struct _wireVARIANT {
+ USHORT vt;
+ USHORT wReserved1;
+ USHORT wReserved2;
+ USHORT wReserved3;
+ [switch_type(USHORT), switch_is(vt)] union {
+ [case(VT_I4)] LONG lVal; /* VT_I4 */
+ [case(VT_UI1)] BYTE bVal; /* VT_UI1 */
+ [case(VT_I2)] SHORT iVal; /* VT_I2 */
+ [case(VT_R4)] FLOAT fltVal; /* VT_R4 */
+ [case(VT_R8)] DOUBLE dblVal; /* VT_R8 */
+ [case(VT_BOOL)] VARIANT_BOOL boolVal; /* VT_BOOL */
+ [case(VT_ERROR)] SCODE scode; /* VT_ERROR */
+ [case(VT_CY)] CY cyVal; /* VT_CY */
+ [case(VT_DATE)] DATE date; /* VT_DATE */
+ [case(VT_BSTR)] wireBSTR bstrVal; /* VT_BSTR */
+ [case(VT_UNKNOWN)] IUnknown * punkVal; /* VT_UNKNOWN */
+ [case(VT_DISPATCH)] IDispatch * pdispVal; /* VT_DISPATCH */
+ [case(VT_ARRAY)] wireSAFEARRAY parray; /* VT_ARRAY */
+
+ [case(VT_UI1|VT_BYREF)]
+ BYTE * pbVal; /* VT_BYREF|VT_UI1 */
+ [case(VT_I2|VT_BYREF)]
+ SHORT * piVal; /* VT_BYREF|VT_I2 */
+ [case(VT_I4|VT_BYREF)]
+ LONG * plVal; /* VT_BYREF|VT_I4 */
+ [case(VT_R4|VT_BYREF)]
+ FLOAT * pfltVal; /* VT_BYREF|VT_R4 */
+ [case(VT_R8|VT_BYREF)]
+ DOUBLE * pdblVal; /* VT_BYREF|VT_R8 */
+ [case(VT_BOOL|VT_BYREF)]
+ VARIANT_BOOL *pboolVal; /* VT_BYREF|VT_BOOL */
+ [case(VT_ERROR|VT_BYREF)]
+ SCODE * pscode; /* VT_BYREF|VT_ERROR */
+ [case(VT_CY|VT_BYREF)]
+ CY * pcyVal; /* VT_BYREF|VT_CY */
+ [case(VT_DATE|VT_BYREF)]
+ DATE * pdate; /* VT_BYREF|VT_DATE */
+ [case(VT_BSTR|VT_BYREF)]
+ wireBSTR * pbstrVal; /* VT_BYREF|VT_BSTR */
+ [case(VT_UNKNOWN|VT_BYREF)]
+ IUnknown ** ppunkVal; /* VT_BYREF|VT_UNKNOWN */
+ [case(VT_DISPATCH|VT_BYREF)]
+ IDispatch ** ppdispVal; /* VT_BYREF|VT_DISPATCH */
+ [case(VT_ARRAY|VT_BYREF)]
+ wireSAFEARRAY *pparray; /* VT_BYREF|VT_ARRAY */
+ [case(VT_VARIANT|VT_BYREF)]
+ wireVARIANT * pvarVal; /* VT_BYREF|VT_VARIANT */
+
+ [case(VT_I1)] CHAR cVal; /* VT_I1 */
+ [case(VT_UI2)] USHORT uiVal; /* VT_UI2 */
+ [case(VT_UI4)] ULONG ulVal; /* VT_UI4 */
+ [case(VT_INT)] INT intVal; /* VT_INT */
+ [case(VT_UINT)] UINT uintVal; /* VT_UINT */
+ [case(VT_DECIMAL)] DECIMAL decVal; /* VT_DECIMAL */
+
+ [case(VT_BYREF|VT_DECIMAL)]
+ DECIMAL * pdecVal; /* VT_BYREF|VT_DECIMAL */
+ [case(VT_BYREF|VT_I1)]
+ CHAR * pcVal; /* VT_BYREF|VT_I1 */
+ [case(VT_BYREF|VT_UI2)]
+ USHORT * puiVal; /* VT_BYREF|VT_UI2 */
+ [case(VT_BYREF|VT_UI4)]
+ ULONG * pulVal; /* VT_BYREF|VT_UI4 */
+ [case(VT_BYREF|VT_INT)]
+ INT * pintVal; /* VT_BYREF|VT_INT */
+ [case(VT_BYREF|VT_UINT)]
+ UINT * puintVal; /* VT_BYREF|VT_UINT */
+
+ [case(VT_EMPTY)] ; /* nothing */
+ [case(VT_NULL)] ; /* nothing */
+ };
+};
+
+cpp_quote("#endif /* _OLEAUT32_ */")
+
+//########################################################################
+// End of VARIANT & SAFEARRAY
+//########################################################################
+
+
+//TypeInfo stuff.
+
+typedef LONG DISPID;
+typedef DISPID MEMBERID;
+typedef DWORD HREFTYPE;
+
+typedef [v1_enum] enum tagTYPEKIND {
+ TKIND_ENUM = 0,
+ TKIND_RECORD,
+ TKIND_MODULE,
+ TKIND_INTERFACE,
+ TKIND_DISPATCH,
+ TKIND_COCLASS,
+ TKIND_ALIAS,
+ TKIND_UNION,
+ TKIND_MAX /* end of enum marker */
+} TYPEKIND;
+
+typedef struct tagTYPEDESC {
+ [switch_type(VARTYPE), switch_is(vt)] union {
+ [case(VT_PTR, VT_SAFEARRAY)] struct tagTYPEDESC * lptdesc;
+ [case(VT_CARRAY)] struct tagARRAYDESC * lpadesc;
+ [case(VT_USERDEFINED)] HREFTYPE hreftype;
+ [default] ;
+ };
+ VARTYPE vt;
+} TYPEDESC;
+
+typedef struct tagARRAYDESC {
+ TYPEDESC tdescElem; /* element type */
+ USHORT cDims; /* dimension count */
+ [size_is(cDims)] SAFEARRAYBOUND rgbounds[]; /* var len array of bounds */
+} ARRAYDESC;
+
+// parameter description
+
+typedef struct tagPARAMDESCEX {
+ ULONG cBytes; /* size of this structure */
+ VARIANTARG varDefaultValue; /* default value of this parameter */
+} PARAMDESCEX, * LPPARAMDESCEX;
+
+typedef struct tagPARAMDESC {
+ LPPARAMDESCEX pparamdescex; /* valid if PARAMFLAG_FHASDEFAULT bit is set */
+ USHORT wParamFlags; /* IN, OUT, etc */
+} PARAMDESC, * LPPARAMDESC;
+
+const USHORT PARAMFLAG_NONE = 0x00;
+const USHORT PARAMFLAG_FIN = 0x01;
+const USHORT PARAMFLAG_FOUT = 0x02;
+const USHORT PARAMFLAG_FLCID = 0x04;
+const USHORT PARAMFLAG_FRETVAL = 0x08;
+const USHORT PARAMFLAG_FOPT = 0x10;
+const USHORT PARAMFLAG_FHASDEFAULT = 0x20;
+
+typedef struct tagIDLDESC {
+ ULONG dwReserved;
+ USHORT wIDLFlags; /* IN, OUT, etc */
+} IDLDESC, * LPIDLDESC;
+
+const USHORT IDLFLAG_NONE = PARAMFLAG_NONE;
+const USHORT IDLFLAG_FIN = PARAMFLAG_FIN;
+const USHORT IDLFLAG_FOUT = PARAMFLAG_FOUT;
+const USHORT IDLFLAG_FLCID = PARAMFLAG_FLCID;
+const USHORT IDLFLAG_FRETVAL = PARAMFLAG_FRETVAL;
+
+cpp_quote("#if 0")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+typedef struct tagELEMDESC { /* a format that MIDL likes */
+ TYPEDESC tdesc; /* the type of the element */
+ PARAMDESC paramdesc; /* IDLDESC is a subset of PARAMDESC */
+} ELEMDESC;
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagELEMDESC {")
+cpp_quote(" TYPEDESC tdesc; /* the type of the element */")
+cpp_quote(" union {")
+cpp_quote(" IDLDESC idldesc; /* info for remoting the element */")
+cpp_quote(" PARAMDESC paramdesc; /* info about the parameter */")
+cpp_quote(" };")
+cpp_quote("} ELEMDESC, * LPELEMDESC;")
+cpp_quote("#endif /* 0 */")
+
+typedef struct tagTYPEATTR {
+ GUID guid; /* the GUID of the TypeInfo */
+ LCID lcid; /* locale of member names and doc strings */
+ DWORD dwReserved;
+ MEMBERID memidConstructor; /* ID of constructor, MEMBERID_NIL if none */
+ MEMBERID memidDestructor; /* ID of destructor, MEMBERID_NIL if none */
+ LPOLESTR lpstrSchema;
+ ULONG cbSizeInstance; /* the size of an instance of this type */
+ TYPEKIND typekind; /* the kind of type this typeinfo describes */
+ WORD cFuncs; /* number of functions */
+ WORD cVars; /* number of variables / data members */
+ WORD cImplTypes; /* number of implemented interfaces */
+ WORD cbSizeVft; /* the size of this types virtual func table */
+ WORD cbAlignment; /* specifies the alignment requirements for
+ an instance of this type,
+ 0 = align on 64k boundary
+ 1 = byte align
+ 2 = word align
+ 4 = dword align... */
+ WORD wTypeFlags;
+ WORD wMajorVerNum; /* major version number */
+ WORD wMinorVerNum; /* minor version number */
+ TYPEDESC tdescAlias; /* if typekind == TKIND_ALIAS this field
+ specifies the type for which this type
+ is an alias */
+ IDLDESC idldescType; /* IDL attributes of the described type */
+} TYPEATTR, * LPTYPEATTR;
+
+typedef TYPEATTR ** PPTYPEATTR;
+
+typedef struct tagDISPPARAMS {
+ [size_is(cArgs)] VARIANTARG * rgvarg;
+ [size_is(cNamedArgs)] DISPID * rgdispidNamedArgs;
+ UINT cArgs;
+ UINT cNamedArgs;
+} DISPPARAMS;
+
+cpp_quote("#if 0")
+cpp_quote("/* the following is what MIDL knows how to remote */")
+
+typedef struct tagEXCEPINFO {
+ WORD wCode; /* An error code describing the error. */
+ WORD wReserved;
+ BSTR bstrSource; /* A source of the exception */
+ BSTR bstrDescription; /* A description of the error */
+ BSTR bstrHelpFile; /* Fully qualified drive, path, and file name */
+ DWORD dwHelpContext; /* help context of topic within the help file */
+ ULONG pvReserved;
+ ULONG pfnDeferredFillIn;
+ SCODE scode;
+} EXCEPINFO;
+
+cpp_quote("#else /* 0 */")
+cpp_quote("typedef struct tagEXCEPINFO {")
+cpp_quote(" WORD wCode;")
+cpp_quote(" WORD wReserved;")
+cpp_quote(" BSTR bstrSource;")
+cpp_quote(" BSTR bstrDescription;")
+cpp_quote(" BSTR bstrHelpFile;")
+cpp_quote(" DWORD dwHelpContext;")
+cpp_quote(" PVOID pvReserved;")
+cpp_quote(" HRESULT (__stdcall *pfnDeferredFillIn)(struct tagEXCEPINFO *);")
+cpp_quote(" SCODE scode;")
+cpp_quote("} EXCEPINFO, * LPEXCEPINFO;")
+cpp_quote("#endif /* 0 */")
+
+typedef [v1_enum] enum tagCALLCONV {
+ CC_CDECL = 1,
+ CC_MSCPASCAL,
+ CC_PASCAL = CC_MSCPASCAL,
+ CC_MACPASCAL,
+ CC_STDCALL,
+ CC_RESERVED,
+ CC_SYSCALL,
+ CC_MPWCDECL,
+ CC_MPWPASCAL,
+ CC_MAX /* end of enum marker */
+} CALLCONV;
+
+typedef [v1_enum] enum tagFUNCKIND {
+ FUNC_VIRTUAL,
+ FUNC_PUREVIRTUAL,
+ FUNC_NONVIRTUAL,
+ FUNC_STATIC,
+ FUNC_DISPATCH
+} FUNCKIND;
+
+typedef [v1_enum] enum tagINVOKEKIND {
+ INVOKE_FUNC = 1,
+ INVOKE_PROPERTYGET = 2,
+ INVOKE_PROPERTYPUT = 4,
+ INVOKE_PROPERTYPUTREF = 8
+} INVOKEKIND;
+
+typedef struct tagFUNCDESC {
+ MEMBERID memid;
+ [size_is(cScodes)] SCODE * lprgscode;
+ [size_is(cParams)] ELEMDESC * lprgelemdescParam; /* array of param types */
+ FUNCKIND funckind;
+ INVOKEKIND invkind;
+ CALLCONV callconv;
+ SHORT cParams;
+ SHORT cParamsOpt;
+ SHORT oVft;
+ SHORT cScodes;
+ ELEMDESC elemdescFunc;
+ WORD wFuncFlags;
+} FUNCDESC, * LPFUNCDESC;
+
+typedef FUNCDESC ** PPFUNCDESC;
+
+typedef [v1_enum] enum tagVARKIND {
+ VAR_PERINSTANCE,
+ VAR_STATIC,
+ VAR_CONST,
+ VAR_DISPATCH
+} VARKIND;
+
+/* IMPLTYPE Flags */
+const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
+const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
+const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
+const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
+
+typedef struct tagVARDESC {
+ MEMBERID memid;
+ LPOLESTR lpstrSchema;
+ [switch_type(VARKIND), switch_is(varkind)] union {
+ /* offset of variable within the instance */
+ [case(VAR_PERINSTANCE, VAR_DISPATCH, VAR_STATIC)] ULONG oInst;
+ [case(VAR_CONST)] VARIANT * lpvarValue; /* the value of the constant */
+ };
+ ELEMDESC elemdescVar;
+ WORD wVarFlags;
+ VARKIND varkind;
+} VARDESC, * LPVARDESC;
+
+typedef VARDESC ** PPVARDESC;
+
+typedef enum tagTYPEFLAGS {
+ TYPEFLAG_FAPPOBJECT = 0x01,
+ TYPEFLAG_FCANCREATE = 0x02,
+ TYPEFLAG_FLICENSED = 0x04,
+ TYPEFLAG_FPREDECLID = 0x08,
+ TYPEFLAG_FHIDDEN = 0x10,
+ TYPEFLAG_FCONTROL = 0x20,
+ TYPEFLAG_FDUAL = 0x40,
+ TYPEFLAG_FNONEXTENSIBLE = 0x80,
+ TYPEFLAG_FOLEAUTOMATION = 0x100,
+ TYPEFLAG_FRESTRICTED = 0x200,
+ TYPEFLAG_FAGGREGATABLE = 0x400,
+ TYPEFLAG_FREPLACEABLE = 0x800,
+ TYPEFLAG_FDISPATCHABLE = 0x1000,
+ TYPEFLAG_FREVERSEBIND = 0x2000
+} TYPEFLAGS;
+
+typedef enum tagFUNCFLAGS {
+ FUNCFLAG_FRESTRICTED = 0x1,
+ FUNCFLAG_FSOURCE = 0x2,
+ FUNCFLAG_FBINDABLE = 0x4,
+ FUNCFLAG_FREQUESTEDIT = 0x8,
+ FUNCFLAG_FDISPLAYBIND = 0x10,
+ FUNCFLAG_FDEFAULTBIND = 0x20,
+ FUNCFLAG_FHIDDEN = 0x40,
+ FUNCFLAG_FUSESGETLASTERROR = 0x80,
+ FUNCFLAG_FDEFAULTCOLLELEM = 0x100,
+ FUNCFLAG_FUIDEFAULT = 0x200,
+ FUNCFLAG_FNONBROWSABLE = 0x400,
+ FUNCFLAG_FREPLACEABLE = 0x800,
+ FUNCFLAG_FIMMEDIATEBIND = 0x1000
+} FUNCFLAGS;
+
+typedef enum tagVARFLAGS {
+ VARFLAG_FREADONLY = 0x1,
+ VARFLAG_FSOURCE = 0x2,
+ VARFLAG_FBINDABLE = 0x4,
+ VARFLAG_FREQUESTEDIT = 0x8,
+ VARFLAG_FDISPLAYBIND = 0x10,
+ VARFLAG_FDEFAULTBIND = 0x20,
+ VARFLAG_FHIDDEN = 0x40,
+ VARFLAG_FRESTRICTED = 0x80,
+ VARFLAG_FDEFAULTCOLLELEM = 0x100,
+ VARFLAG_FUIDEFAULT = 0x200,
+ VARFLAG_FNONBROWSABLE = 0x400,
+ VARFLAG_FREPLACEABLE = 0x800,
+ VARFLAG_FIMMEDIATEBIND = 0x1000
+} VARFLAGS;
+
+typedef [wire_marshal(DWORD)] struct tagCLEANLOCALSTORAGE {
+ IUnknown * pInterface; /* interface that is responsible for storage */
+ PVOID pStorage; /* the storage being managed by interface */
+ DWORD flags; /* which interface, what storage */
+} CLEANLOCALSTORAGE;
+
+typedef struct tagCUSTDATAITEM {
+ GUID guid; /* guid identifying this custom data item */
+ VARIANTARG varValue; /* value of this custom data item */
+} CUSTDATAITEM, * LPCUSTDATAITEM;
+
+typedef struct tagCUSTDATA {
+ DWORD cCustData; /* number of custom data items in rgCustData */
+ [size_is(cCustData)] LPCUSTDATAITEM prgCustData;
+ /* array of custom data items */
+} CUSTDATA, * LPCUSTDATA;
+
+}
+
+
+[
+ object,
+ uuid(00020405-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeInfo: IUnknown
+{
+ typedef [unique] ICreateTypeInfo * LPCREATETYPEINFO;
+
+ HRESULT SetGuid(
+ [in] REFGUID guid
+ );
+
+ HRESULT SetTypeFlags(
+ [in] UINT uTypeFlags
+ );
+
+ HRESULT SetDocString(
+ [in] LPOLESTR pStrDoc
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetVersion(
+ [in] WORD wMajorVerNum,
+ [in] WORD wMinorVerNum
+ );
+
+ HRESULT AddRefTypeInfo(
+
+ [in] ITypeInfo * pTInfo,
+ [in] HREFTYPE * phRefType
+ );
+
+ HRESULT AddFuncDesc(
+ [in] UINT index,
+ [in] FUNCDESC * pFuncDesc
+ );
+
+ HRESULT AddImplType(
+ [in] UINT index,
+ [in] HREFTYPE hRefType
+ );
+
+ HRESULT SetImplTypeFlags(
+ [in] UINT index,
+ [in] INT implTypeFlags
+ );
+
+ HRESULT SetAlignment(
+ [in] WORD cbAlignment
+ );
+
+ HRESULT SetSchema(
+ [in] LPOLESTR pStrSchema
+ );
+
+ HRESULT AddVarDesc(
+ [in] UINT index,
+ [in] VARDESC * pVarDesc
+ );
+
+ HRESULT SetFuncAndParamNames(
+ [in] UINT index,
+ [in, size_is((UINT) cNames)]
+ [in] LPOLESTR * rgszNames,
+ [in] UINT cNames
+ );
+
+ HRESULT SetVarName(
+ [in] UINT index,
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetTypeDescAlias(
+ [in] TYPEDESC * pTDescAlias
+ );
+
+ HRESULT DefineFuncAsDllEntry(
+ [in] UINT index,
+ [in] LPOLESTR szDllName,
+ [in] LPOLESTR szProcName
+ );
+
+ HRESULT SetFuncDocString(
+ [in] UINT index,
+ [in] LPOLESTR szDocString
+ );
+
+ HRESULT SetVarDocString(
+ [in] UINT index,
+ [in] LPOLESTR szDocString
+ );
+
+ HRESULT SetFuncHelpContext(
+ [in] UINT index,
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetVarHelpContext(
+ [in] UINT index,
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetMops(
+ [in] UINT index,
+ [in] BSTR bstrMops
+ );
+
+ HRESULT SetTypeIdldesc(
+ [in] IDLDESC * pIdlDesc
+ );
+
+ HRESULT LayOut(
+ void
+ );
+
+}
+
+
+[
+ object,
+ uuid(0002040E-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeInfo2: ICreateTypeInfo
+{
+ typedef [unique] ICreateTypeInfo2 * LPCREATETYPEINFO2;
+
+ HRESULT DeleteFuncDesc(
+ [in] UINT index
+ );
+
+ HRESULT DeleteFuncDescByMemId(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind
+ );
+
+ HRESULT DeleteVarDesc(
+ [in] UINT index
+ );
+
+ HRESULT DeleteVarDescByMemId(
+ [in] MEMBERID memid
+ );
+
+ HRESULT DeleteImplType(
+ [in] UINT index
+ );
+
+ HRESULT SetCustData(
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetFuncCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetVarCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetImplTypeCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetHelpStringContext(
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetFuncHelpStringContext(
+ [in] UINT index,
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetVarHelpStringContext(
+ [in] UINT index,
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT Invalidate(
+ void
+ );
+
+ HRESULT SetName(
+ [in] LPOLESTR szName
+ );
+
+}
+
+
+[
+ object,
+ uuid(00020406-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeLib : IUnknown
+{
+ typedef [unique] ICreateTypeLib * LPCREATETYPELIB;
+
+ HRESULT CreateTypeInfo(
+ [in] LPOLESTR szName,
+ [in] TYPEKIND tkind,
+ [out] ICreateTypeInfo ** ppCTInfo
+ );
+
+ HRESULT SetName(
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetVersion(
+ [in] WORD wMajorVerNum,
+ [in] WORD wMinorVerNum
+ );
+
+ HRESULT SetGuid(
+ [in] REFGUID guid
+ );
+
+ HRESULT SetDocString(
+ [in] LPOLESTR szDoc
+ );
+
+ HRESULT SetHelpFileName(
+ [in] LPOLESTR szHelpFileName
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+
+ HRESULT SetLcid(
+ [in] LCID lcid
+ );
+
+ HRESULT SetLibFlags(
+ [in] UINT uLibFlags
+ );
+
+ HRESULT SaveAllChanges(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(0002040F-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateTypeLib2 : ICreateTypeLib
+{
+ typedef [unique] ICreateTypeLib2 * LPCREATETYPELIB2;
+
+ HRESULT DeleteTypeInfo(
+ [in] LPOLESTR szName
+ );
+
+ HRESULT SetCustData(
+ [in] REFGUID guid,
+ [in] VARIANT * pVarVal
+ );
+
+ HRESULT SetHelpStringContext(
+ [in] ULONG dwHelpStringContext
+ );
+
+ HRESULT SetHelpStringDll(
+ [in] LPOLESTR szFileName
+ );
+}
+
+
+[
+ object,
+ uuid(00020400-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IDispatch : IUnknown
+{
+ typedef [unique] IDispatch * LPDISPATCH;
+
+ HRESULT GetTypeInfoCount(
+ [out] UINT * pctinfo
+ );
+
+ HRESULT GetTypeInfo(
+ [in] UINT iTInfo,
+ [in] LCID lcid,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ HRESULT GetIDsOfNames(
+ [in] REFIID riid,
+ [in, size_is(cNames)] LPOLESTR * rgszNames,
+ [in] UINT cNames,
+ [in] LCID lcid,
+ [out, size_is(cNames)] DISPID * rgDispId
+ );
+
+ [local]
+ HRESULT Invoke(
+ [in] DISPID dispIdMember,
+ [in] REFIID riid,
+ [in] LCID lcid,
+ [in] WORD wFlags,
+ [in, out] DISPPARAMS * pDispParams,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * puArgErr
+ );
+
+ [call_as(Invoke)]
+ HRESULT RemoteInvoke(
+ [in] DISPID dispIdMember,
+ [in] REFIID riid,
+ [in] LCID lcid,
+ [in] DWORD dwFlags,
+ [in] DISPPARAMS * pDispParams,
+ [out, size_is(cVtRef)] VARIANTARG * rgVtRef,
+ [in] UINT cVtRef,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * pArgErr
+ );
+
+cpp_quote("/* DISPID reserved to indicate an \"unknown\" name */")
+cpp_quote("/* only reserved for data members (properties); reused as a method dispid below */")
+const DISPID DISPID_UNKNOWN = -1;
+
+cpp_quote("/* DISPID reserved for the \"value\" property */")
+const DISPID DISPID_VALUE = 0;
+
+cpp_quote("/* The following DISPID is reserved to indicate the param")
+cpp_quote(" * that is the right-hand-side (or \"put\" value) of a PropertyPut")
+cpp_quote(" */")
+const DISPID DISPID_PROPERTYPUT = -3;
+
+cpp_quote("/* DISPID reserved for the standard \"NewEnum\" method */")
+const DISPID DISPID_NEWENUM = -4;
+
+cpp_quote("/* DISPID reserved for the standard \"Evaluate\" method */")
+const DISPID DISPID_EVALUATE = -5;
+
+const DISPID DISPID_CONSTRUCTOR = -6;
+
+const DISPID DISPID_DESTRUCTOR = -7;
+
+const DISPID DISPID_COLLECT = -8;
+
+cpp_quote("/* The range -500 through -999 is reserved for Controls */")
+cpp_quote("/* The range 0x80010000 through 0x8001FFFF is reserved for Controls */")
+cpp_quote("/* The range -5000 through -5499 is reserved for ActiveX Accessability */")
+cpp_quote("/* The remainder of the negative DISPIDs are reserved for future use */")
+
+}
+
+
+[
+ object,
+ uuid(00020404-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface IEnumVARIANT : IUnknown
+{
+ typedef [unique] IEnumVARIANT* LPENUMVARIANT;
+
+ [local]
+ HRESULT Next(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+ [out] ULONG * pCeltFetched
+ );
+
+ [call_as(Next)]
+ HRESULT RemoteNext(
+ [in] ULONG celt,
+ [out, size_is(celt), length_is(*pCeltFetched)] VARIANT * rgVar,
+ [out] ULONG * pCeltFetched
+ );
+
+ HRESULT Skip(
+ [in] ULONG celt
+ );
+
+ HRESULT Reset(
+ );
+
+ HRESULT Clone(
+ [out] IEnumVARIANT ** ppEnum
+ );
+}
+
+
+[
+ object,
+ uuid(00020403-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeComp : IUnknown
+{
+ typedef [unique] ITypeComp * LPTYPECOMP;
+
+ typedef [v1_enum] enum tagDESCKIND {
+ DESCKIND_NONE = 0,
+ DESCKIND_FUNCDESC,
+ DESCKIND_VARDESC,
+ DESCKIND_TYPECOMP,
+ DESCKIND_IMPLICITAPPOBJ,
+ DESCKIND_MAX
+ } DESCKIND;
+
+ typedef union tagBINDPTR {
+ FUNCDESC * lpfuncdesc;
+ VARDESC * lpvardesc;
+ ITypeComp * lptcomp;
+ } BINDPTR, * LPBINDPTR;
+
+ [local]
+ HRESULT Bind(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [in] WORD wFlags,
+ [out] ITypeInfo ** ppTInfo,
+ [out] DESCKIND * pDescKind,
+ [out] BINDPTR * pBindPtr
+ );
+
+ [call_as(Bind)]
+ HRESULT RemoteBind(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [in] WORD wFlags,
+ [out] ITypeInfo ** ppTInfo,
+ [out] DESCKIND * pDescKind,
+ [out] PPFUNCDESC ppFuncDesc,
+ [out] PPVARDESC ppVarDesc,
+ [out] ITypeComp ** ppTypeComp,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ [local]
+ HRESULT BindType(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [out] ITypeInfo ** ppTInfo,
+ [out] ITypeComp ** ppTComp
+ );
+
+ [call_as(BindType)]
+ HRESULT RemoteBindType(
+ [in] LPOLESTR szName,
+ [in] ULONG lHashVal,
+ [out] ITypeInfo ** ppTInfo
+ );
+}
+
+
+[
+ object,
+ uuid(00020401-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeInfo : IUnknown
+{
+ typedef [unique] ITypeInfo * LPTYPEINFO;
+
+ [local]
+ HRESULT GetTypeAttr(
+ [out] TYPEATTR ** ppTypeAttr
+ );
+
+ [call_as(GetTypeAttr)]
+ HRESULT RemoteGetTypeAttr(
+ [out] PPTYPEATTR ppTypeAttr,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetTypeComp(
+ [out] ITypeComp ** ppTComp
+ );
+
+ [local]
+ HRESULT GetFuncDesc(
+ [in] UINT index,
+ [out] FUNCDESC ** ppFuncDesc
+ );
+
+ [call_as(GetFuncDesc)]
+ HRESULT RemoteGetFuncDesc(
+ [in] UINT index,
+ [out] PPFUNCDESC ppFuncDesc,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ [local]
+ HRESULT GetVarDesc(
+ [in] UINT index,
+ [out] VARDESC ** ppVarDesc
+ );
+
+ [call_as(GetVarDesc)]
+ HRESULT RemoteGetVarDesc(
+ [in] UINT index,
+ [out] PPVARDESC ppVarDesc,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetNames(
+ [in] MEMBERID memid,
+ [out,size_is(cMaxNames),length_is(*pcNames)] BSTR * rgBstrNames,
+ [in] UINT cMaxNames,
+ [out] UINT * pcNames
+ );
+
+ HRESULT GetRefTypeOfImplType(
+ [in] UINT index,
+ [out] HREFTYPE * pRefType
+ );
+
+ HRESULT GetImplTypeFlags(
+ [in] UINT index,
+ [out] INT * pImplTypeFlags
+ );
+
+ HRESULT GetIDsOfNames(
+ [in, size_is(cNames)] LPOLESTR * rgszNames,
+ [in] UINT cNames,
+ [out, size_is(cNames)] MEMBERID * pMemId
+ );
+
+ [local]
+ HRESULT Invoke(
+ [in] PVOID pvInstance,
+ [in] MEMBERID memid,
+ [in] WORD wFlags,
+ [in, out] DISPPARAMS * pDispParams,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * puArgErr
+ );
+
+ [call_as(Invoke)]
+ HRESULT RemoteInvoke (
+ [in] IUnknown * pIUnk,
+ [in] MEMBERID memid,
+ [in] DWORD dwFlags,
+ [in] DISPPARAMS * pDispParams,
+ [out, size_is(cVtRef)] VARIANTARG * rgVtRef,
+ [in] UINT cVtRef,
+ [out] VARIANT * pVarResult,
+ [out] EXCEPINFO * pExcepInfo,
+ [out] UINT * pArgErr
+ );
+
+ [local]
+ HRESULT GetDocumentation(
+ [in] MEMBERID memid,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [call_as(GetDocumentation)]
+ HRESULT RemoteGetDocumentation(
+ [in] MEMBERID memid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [local]
+ HRESULT GetDllEntry(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] BSTR * pBstrDllName,
+ [out] BSTR * pBstrName,
+ [out] WORD * pwOrdinal
+ );
+
+ [call_as(GetDllEntry)]
+ HRESULT RemoteGetDllEntry(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrDllName,
+ [out] BSTR * pBstrName,
+ [out] WORD * pwOrdinal
+ );
+
+ HRESULT GetRefTypeInfo(
+ [in] HREFTYPE hRefType,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ [local]
+ HRESULT AddressOfMember(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] PVOID * ppv
+ );
+
+ [call_as(AddressOfMember)]
+ HRESULT LocalAddressOfMember(
+ void
+ );
+
+ [local]
+ HRESULT CreateInstance(
+ [in] IUnknown * pUnkOuter,
+ [in] REFIID riid,
+ [out, iid_is(riid)] PVOID * ppvObj
+ );
+
+ [call_as(CreateInstance)]
+ HRESULT RemoteCreateInstance(
+ [in] REFIID riid,
+ [out, iid_is(riid)] IUnknown ** ppvObj
+ );
+
+ HRESULT GetMops(
+ [in] MEMBERID memid,
+ [out] BSTR * pBstrMops
+ );
+
+ HRESULT GetContainingTypeLib(
+ [out] ITypeLib ** ppTLib,
+ [out] UINT * pIndex
+ );
+
+ [local]
+ void ReleaseTypeAttr(
+ [in] TYPEATTR * pTypeAttr
+ );
+
+ [call_as(ReleaseTypeAttr)]
+ HRESULT LocalReleaseTypeAttr(
+ void
+ );
+
+ [local]
+ void ReleaseFuncDesc(
+ [in] FUNCDESC * pFuncDesc
+ );
+
+ [call_as(ReleaseFuncDesc)]
+ HRESULT LocalReleaseFuncDesc(
+ void
+ );
+
+ [local]
+ void ReleaseVarDesc(
+ [in] VARDESC * pVarDesc
+ );
+
+ [call_as(ReleaseVarDesc)]
+ HRESULT LocalReleaseVarDesc(
+ void
+ );
+}
+
+
+
+[
+ object,
+ uuid(00020412-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeInfo2 : ITypeInfo
+{
+ typedef [unique] ITypeInfo2 * LPTYPEINFO2;
+
+ HRESULT GetTypeKind(
+ [out] TYPEKIND * pTypeKind
+ );
+
+ HRESULT GetTypeFlags(
+ [out] ULONG * pTypeFlags
+ );
+
+ HRESULT GetFuncIndexOfMemId(
+ [in] MEMBERID memid,
+ [in] INVOKEKIND invKind,
+ [out] UINT * pFuncIndex
+ );
+
+ HRESULT GetVarIndexOfMemId(
+ [in] MEMBERID memid,
+ [out] UINT * pVarIndex
+ );
+
+ HRESULT GetCustData(
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetFuncCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetVarCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ HRESULT GetImplTypeCustData(
+ [in] UINT index,
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ [local]
+ HRESULT GetDocumentation2(
+ [in] MEMBERID memid,
+ [in] LCID lcid,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ [call_as(GetDocumentation2)]
+ HRESULT RemoteGetDocumentation2(
+ [in] MEMBERID memid,
+ [in] LCID lcid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ HRESULT GetAllCustData(
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllFuncCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllParamCustData(
+ [in] UINT indexFunc,
+ [in] UINT indexParam,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllVarCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+
+ HRESULT GetAllImplTypeCustData(
+ [in] UINT index,
+ [out] CUSTDATA * pCustData
+ );
+}
+
+
+[
+ object,
+ uuid(00020402-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeLib : IUnknown
+{
+ typedef [v1_enum] enum tagSYSKIND {
+ SYS_WIN16 = 0,
+ SYS_WIN32,
+ SYS_MAC
+ } SYSKIND;
+
+ typedef [v1_enum] enum tagLIBFLAGS {
+ LIBFLAG_FRESTRICTED = 0x01,
+ LIBFLAG_FCONTROL = 0x02,
+ LIBFLAG_FHIDDEN = 0x04,
+ LIBFLAG_FHASDISKIMAGE = 0x08
+ } LIBFLAGS;
+
+ typedef [unique] ITypeLib * LPTYPELIB;
+
+ typedef struct tagTLIBATTR {
+ GUID guid;
+ LCID lcid;
+ SYSKIND syskind;
+ WORD wMajorVerNum;
+ WORD wMinorVerNum;
+ WORD wLibFlags;
+ } TLIBATTR, * LPTLIBATTR;
+
+ typedef TLIBATTR ** PPTLIBATTR;
+
+ [local]
+ UINT GetTypeInfoCount(
+ void
+ );
+
+ [call_as(GetTypeInfoCount)]
+ HRESULT RemoteGetTypeInfoCount(
+ [out] UINT * pcTInfo
+ );
+
+ HRESULT GetTypeInfo(
+ [in] UINT index,
+ [out] ITypeInfo ** ppTInfo
+ );
+
+ HRESULT GetTypeInfoType(
+ [in] UINT index,
+ [out] TYPEKIND * pTKind
+ );
+
+ HRESULT GetTypeInfoOfGuid(
+ [in] REFGUID guid,
+ [out] ITypeInfo ** ppTinfo
+ );
+
+ [local]
+ HRESULT GetLibAttr(
+ [out] TLIBATTR ** ppTLibAttr
+ );
+
+ [call_as(GetLibAttr)]
+ HRESULT RemoteGetLibAttr(
+ [out] PPTLIBATTR ppTLibAttr,
+ [out] CLEANLOCALSTORAGE * pDummy
+ );
+
+ HRESULT GetTypeComp(
+ [out] ITypeComp ** ppTComp
+ );
+
+ [local]
+ HRESULT GetDocumentation(
+ [in] INT index,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [call_as(GetDocumentation)]
+ HRESULT RemoteGetDocumentation(
+ [in] INT index,
+ [in] DWORD refPtrFlags,
+ [out] BSTR * pBstrName,
+ [out] BSTR * pBstrDocString,
+ [out] DWORD * pdwHelpContext,
+ [out] BSTR * pBstrHelpFile
+ );
+
+ [local]
+ HRESULT IsName(
+ [in, out] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out] BOOL * pfName
+ );
+
+ [call_as(IsName)]
+ HRESULT RemoteIsName(
+ [in] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out] BOOL * pfName,
+ [out] BSTR * pBstrLibName
+ );
+
+ [local]
+ HRESULT FindName(
+ [in, out] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo,
+ [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId,
+ [in, out] USHORT * pcFound
+ );
+
+ [call_as(FindName)]
+ HRESULT RemoteFindName(
+ [in] LPOLESTR szNameBuf,
+ [in] ULONG lHashVal,
+ [out,size_is(*pcFound),length_is(*pcFound)] ITypeInfo **ppTInfo,
+ [out,size_is(*pcFound),length_is(*pcFound)] MEMBERID * rgMemId,
+ [in, out] USHORT * pcFound,
+ [out] BSTR * pBstrLibName
+ );
+
+ [local]
+ void ReleaseTLibAttr(
+ [in] TLIBATTR * pTLibAttr
+ );
+
+ [call_as(ReleaseTLibAttr)]
+ HRESULT LocalReleaseTLibAttr(
+ void
+ );
+}
+
+
+[
+ object,
+ uuid(00020411-0000-0000-C000-000000000046),
+ pointer_default(unique)
+]
+
+interface ITypeLib2 : ITypeLib
+{
+ typedef [unique] ITypeLib2 * LPTYPELIB2;
+
+ HRESULT GetCustData(
+ [in] REFGUID guid,
+ [out] VARIANT * pVarVal
+ );
+
+ [local]
+ HRESULT GetLibStatistics(
+ [out] ULONG * pcUniqueNames,
+ [out] ULONG * pcchUniqueNames
+ );
+
+ [call_as(GetLibStatistics)]
+ HRESULT RemoteGetLibStatistics(
+ [out] ULONG * pcUniqueNames,
+ [out] ULONG * pcchUniqueNames
+ );
+
+ [local]
+ HRESULT GetDocumentation2(
+ [in] INT index,
+ [in] LCID lcid,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+ [call_as(GetDocumentation2)]
+ HRESULT RemoteGetDocumentation2(
+ [in] INT index,
+ [in] LCID lcid,
+ [in] DWORD refPtrFlags,
+ [out] BSTR *pbstrHelpString,
+ [out] DWORD *pdwHelpStringContext,
+ [out] BSTR *pbstrHelpStringDll
+ );
+
+
+ HRESULT GetAllCustData(
+ [out] CUSTDATA * pCustData
+ );
+}
+
+
+[
+ object,
+ uuid(00020410-0000-0000-C000-000000000046),
+ pointer_default(unique),
+ local
+]
+
+interface ITypeChangeEvents: IUnknown
+{
+ typedef [unique] ITypeChangeEvents * LPTYPECHANGEEVENTS;
+
+ // notification messages used by the dynamic typeinfo protocol.
+ typedef enum tagCHANGEKIND {
+ CHANGEKIND_ADDMEMBER,
+ CHANGEKIND_DELETEMEMBER,
+ CHANGEKIND_SETNAMES,
+ CHANGEKIND_SETDOCUMENTATION,
+ CHANGEKIND_GENERAL,
+ CHANGEKIND_INVALIDATE,
+ CHANGEKIND_CHANGEFAILED,
+ CHANGEKIND_MAX
+ } CHANGEKIND;
+
+ HRESULT RequestTypeChange(
+ [in] CHANGEKIND changeKind,
+ [in] ITypeInfo * pTInfoBefore,
+ [in] LPOLESTR pStrName,
+ [out] INT * pfCancel
+ );
+
+ HRESULT AfterTypeChange(
+ [in] CHANGEKIND changeKind,
+ [in] ITypeInfo * pTInfoAfter,
+ [in] LPOLESTR pStrName
+ );
+}
+
+
+[
+ object,
+ uuid(1CF2B120-547D-101B-8E65-08002B2BD119),
+ pointer_default(unique),
+ local
+]
+
+interface IErrorInfo: IUnknown
+{
+ typedef [unique] IErrorInfo * LPERRORINFO;
+
+ HRESULT GetGUID(
+ [out] GUID * pGUID
+ );
+
+ HRESULT GetSource(
+ [out] BSTR * pBstrSource
+ );
+
+ HRESULT GetDescription(
+ [out] BSTR * pBstrDescription
+ );
+
+ HRESULT GetHelpFile(
+ [out] BSTR * pBstrHelpFile
+ );
+
+ HRESULT GetHelpContext(
+ [out] DWORD * pdwHelpContext
+ );
+}
+
+
+[
+ object,
+ uuid(22F03340-547D-101B-8E65-08002B2BD119),
+ pointer_default(unique),
+ local
+]
+
+interface ICreateErrorInfo: IUnknown
+{
+ typedef [unique] ICreateErrorInfo * LPCREATEERRORINFO;
+
+ HRESULT SetGUID(
+ [in] REFGUID rguid
+ );
+
+ HRESULT SetSource(
+ [in] LPOLESTR szSource
+ );
+
+ HRESULT SetDescription(
+ [in] LPOLESTR szDescription
+ );
+
+ HRESULT SetHelpFile(
+ [in] LPOLESTR szHelpFile
+ );
+
+ HRESULT SetHelpContext(
+ [in] DWORD dwHelpContext
+ );
+}
+
+
+[
+ object,
+ uuid(DF0B3D60-548F-101B-8E65-08002B2BD119),
+ pointer_default(unique)
+]
+
+interface ISupportErrorInfo: IUnknown
+{
+ typedef [unique] ISupportErrorInfo * LPSUPPORTERRORINFO;
+
+ HRESULT InterfaceSupportsErrorInfo(
+ [in] REFIID riid
+ );
+}
+