windows-nt/Source/XPSP1/NT/com/published/idlole/public/oaidl.idl
2020-09-26 16:20:57 +08:00

2036 lines
57 KiB
Plaintext

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// File: oaidl.idl
//
//----------------------------------------------------------------------------
cpp_quote("//+-------------------------------------------------------------------------")
cpp_quote("//")
cpp_quote("// Microsoft Windows")
cpp_quote("// Copyright (c) Microsoft Corporation. All rights reserved.")
cpp_quote("//")
cpp_quote("//--------------------------------------------------------------------------")
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(push)")
cpp_quote("#endif")
cpp_quote("#pragma warning(disable:4201) /* Nameless struct/union */")
cpp_quote("#endif")
cpp_quote("#if ( _MSC_VER >= 1020 )")
cpp_quote("#pragma once")
cpp_quote("#endif")
#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;
interface ITypeFactory;
interface ITypeMarshal;
interface IRecordInfo;
[
version(1.0), pointer_default(unique)
]
interface IOleAutomationTypes
{
typedef CY CURRENCY;
// #########################################################################
// SAFEARRAY
// #########################################################################
typedef struct tagSAFEARRAYBOUND {
ULONG cElements;
LONG lLbound;
} SAFEARRAYBOUND, * LPSAFEARRAYBOUND;
cpp_quote("/* the following is what MIDL knows how to remote */")
// Forward references.
typedef [unique] struct _wireVARIANT * wireVARIANT;
typedef [unique] struct _wireBRECORD * wireBRECORD;
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 struct _wireSAFEARR_BRECORD {
ULONG Size;
[size_is(Size), ref] wireBRECORD * aRecord;
} SAFEARR_BRECORD;
typedef struct _wireSAFEARR_HAVEIID {
ULONG Size;
[size_is(Size), ref] IUnknown ** apUnknown;
IID iid;
} SAFEARR_HAVEIID;
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_RECORD = VT_RECORD,
SF_HAVEIID = VT_UNKNOWN|VT_RESERVED,
} 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_RECORD: SAFEARR_BRECORD RecordStr;
case SF_HAVEIID: SAFEARR_HAVEIID HaveIidStr;
case SF_I1: BYTE_SIZEDARR ByteStr;
case SF_I2: WORD_SIZEDARR WordStr;
case SF_I4: DWORD_SIZEDARR LongStr;
case SF_I8: HYPER_SIZEDARR HyperStr;
} 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;
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_RECORD = 0x0020; /* an array of records */
const USHORT FADF_HAVEIID = 0x0040; /* with FADF_DISPATCH, FADF_UNKNOWN */
/* array has an IID for interfaces */
const USHORT FADF_HAVEVARTYPE= 0x0080; /* array has a VT type */
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 = 0xF008; /* 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(" * LONGLONG VT_I8")
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(" * LONGLONG * VT_BYREF|VT_I8")
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(" * ULONGLONG VT_UI8")
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(" * ULONGLONG * VT_BYREF|VT_UI8")
cpp_quote(" * INT * VT_BYREF|VT_INT")
cpp_quote(" * UINT * VT_BYREF|VT_UINT")
cpp_quote(" * }")
cpp_quote(" */")
cpp_quote("#if (__STDC__ && !defined(_FORCENAMELESSUNION)) || 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("#define __VARIANT_NAME_4 brecVal")
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("#define __tagBRECORD")
cpp_quote("#define __VARIANT_NAME_4")
cpp_quote("#endif")
typedef [wire_marshal(wireVARIANT)] struct tagVARIANT VARIANT;
struct tagVARIANT {
union {
struct __tagVARIANT {
VARTYPE vt;
WORD wReserved1;
WORD wReserved2;
WORD wReserved3;
union {
LONGLONG llVal; /* VT_I8 */
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 */
LONGLONG * pllVal; /* VT_BYREF|VT_I8 */
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 */
ULONGLONG ullVal; /* VT_UI8 */
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 */
ULONGLONG * pullVal; /* VT_BYREF|VT_UI8 */
INT * pintVal; /* VT_BYREF|VT_INT */
UINT * puintVal; /* VT_BYREF|VT_UINT */
struct __tagBRECORD {
PVOID pvRecord;
IRecordInfo * pRecInfo;
} __VARIANT_NAME_4; /* VT_RECORD */
} __VARIANT_NAME_3;
} __VARIANT_NAME_2;
DECIMAL decVal;
} __VARIANT_NAME_1;
};
typedef VARIANT * LPVARIANT;
typedef VARIANT VARIANTARG;
typedef VARIANT * LPVARIANTARG;
cpp_quote("/* the following is what MIDL knows how to remote */")
struct _wireBRECORD {
ULONG fFlags;
ULONG clSize;
IRecordInfo * pRecInfo;
[size_is(clSize)] byte * pRecord;
};
struct _wireVARIANT {
DWORD clSize; /* wire buffer length in units of hyper (int64) */
DWORD rpcReserved; /* for future use */
USHORT vt;
USHORT wReserved1;
USHORT wReserved2;
USHORT wReserved3;
[switch_type(ULONG), switch_is(vt)] union {
[case(VT_I8)] LONGLONG llVal; /* VT_I8 */
[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)] wirePSAFEARRAY parray; /* VT_ARRAY */
[case(VT_RECORD, VT_RECORD|VT_BYREF)]
wireBRECORD brecVal; /* VT_RECORD */
[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_I8|VT_BYREF)]
LONGLONG * pllVal; /* VT_BYREF|VT_I8 */
[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)]
wirePSAFEARRAY *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_UI8)] ULONGLONG ullVal; /* VT_UI8 */
[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_UI8)]
ULONGLONG * pullVal; /* VT_BYREF|VT_UI8 */
[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 */
};
};
//########################################################################
// 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;
const USHORT PARAMFLAG_FHASCUSTDATA = 0x40;
typedef struct tagIDLDESC {
ULONG_PTR 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("//;begin_internal")
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("//;end_internal")
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("//;begin_internal")
cpp_quote("#endif /* 0 */")
cpp_quote("//;end_internal")
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 struct tagDISPPARAMS {
[size_is(cArgs)] VARIANTARG * rgvarg;
[size_is(cNamedArgs)] DISPID * rgdispidNamedArgs;
UINT cArgs;
UINT cNamedArgs;
} DISPPARAMS;
cpp_quote("//;begin_internal")
cpp_quote("#if 0")
cpp_quote("/* the following is what MIDL knows how to remote */")
midl_pragma warning( disable: 2395) // polymorphic types not supported in the TLB
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 */
// We can use ULONG_PTR here, because EXCEPINFO is marshalled by RPC
// RPC will marshal pfnDeferredFillIn.
ULONG_PTR pvReserved;
ULONG_PTR pfnDeferredFillIn;
SCODE scode;
} EXCEPINFO;
cpp_quote("#else /* 0 */")
cpp_quote("//;end_internal")
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("//;begin_internal")
cpp_quote("#endif /* 0 */")
cpp_quote("//;end_internal")
typedef [v1_enum] enum tagCALLCONV {
CC_FASTCALL = 0,
CC_CDECL = 1,
CC_MSCPASCAL,
CC_PASCAL = CC_MSCPASCAL,
CC_MACPASCAL,
CC_STDCALL,
CC_FPFASTCALL,
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 [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 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,
TYPEFLAG_FPROXY = 0x4000
} 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] VARIANT * pVarResult,
[out] EXCEPINFO * pExcepInfo,
[out] UINT * pArgErr,
[in] UINT cVarRef,
[in, size_is(cVarRef)] UINT * rgVarRefIdx,
[in, out, size_is(cVarRef)] VARIANTARG * rgVarRef
);
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 range -2000 through -2499 is reserved for VB5 */")
cpp_quote("/* The range -3900 through -3999 is reserved for Forms */")
cpp_quote("/* The range -5500 through -5550 is reserved for Forms */")
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] LPFUNCDESC * ppFuncDesc,
[out] LPVARDESC * 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] LPTYPEATTR * 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] LPFUNCDESC * ppFuncDesc,
[out] CLEANLOCALSTORAGE * pDummy
);
[local]
HRESULT GetVarDesc(
[in] UINT index,
[out] VARDESC ** ppVarDesc
);
[call_as(GetVarDesc)]
HRESULT RemoteGetVarDesc(
[in] UINT index,
[out] LPVARDESC * ppVarDesc,
[out] CLEANLOCALSTORAGE * pDummy
);
[local]
HRESULT GetNames(
[in] MEMBERID memid,
[out,size_is(cMaxNames),length_is(*pcNames)] BSTR * rgBstrNames,
[in] UINT cMaxNames,
[out] UINT * pcNames
);
[call_as(GetNames)]
HRESULT RemoteGetNames(
[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
);
[local]
HRESULT GetIDsOfNames(
[in, size_is(cNames)] LPOLESTR * rgszNames,
[in] UINT cNames,
[out, size_is(cNames)] MEMBERID * pMemId
);
[call_as(GetIDsOfNames)]
HRESULT LocalGetIDsOfNames(
void
);
[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 LocalInvoke (
void
);
[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
);
[local]
HRESULT GetContainingTypeLib(
[out] ITypeLib ** ppTLib,
[out] UINT * pIndex
);
[call_as(GetContainingTypeLib)]
HRESULT RemoteGetContainingTypeLib(
[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,
SYS_WIN64
} 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;
[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] LPTLIBATTR * 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)
]
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)
]
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
);
}
[
object,
uuid(0000002E-0000-0000-C000-000000000046)
]
interface ITypeFactory : IUnknown
{
HRESULT CreateFromTypeInfo(
[in] ITypeInfo *pTypeInfo,
[in] REFIID riid,
[out, iid_is(riid)] IUnknown **ppv
);
}
[
local,
object,
uuid(0000002D-0000-0000-C000-000000000046)
]
interface ITypeMarshal : IUnknown
{
HRESULT Size(
[in] PVOID pvType,
[in] DWORD dwDestContext,
[in] PVOID pvDestContext,
[out] ULONG * pSize
);
HRESULT Marshal(
[in] PVOID pvType,
[in] DWORD dwDestContext,
[in] PVOID pvDestContext,
[in] ULONG cbBufferLength,
[out] BYTE * pBuffer,
[out] ULONG * pcbWritten
);
HRESULT Unmarshal(
[out] PVOID pvType,
[in] DWORD dwFlags,
[in] ULONG cbBufferLength,
[in] BYTE * pBuffer,
[out] ULONG * pcbRead
);
HRESULT Free(
[in] PVOID pvType
);
}
[
local,
object,
uuid(0000002F-0000-0000-C000-000000000046)
]
interface IRecordInfo: IUnknown
{
typedef [unique] IRecordInfo * LPRECORDINFO;
HRESULT RecordInit(
[out] PVOID pvNew
);
HRESULT RecordClear(
[in] PVOID pvExisting
);
HRESULT RecordCopy(
[in] PVOID pvExisting,
[out] PVOID pvNew
);
HRESULT GetGuid(
[out] GUID * pguid
);
HRESULT GetName(
[out] BSTR * pbstrName
);
HRESULT GetSize(
[out] ULONG * pcbSize
);
HRESULT GetTypeInfo(
[out] ITypeInfo ** ppTypeInfo
);
HRESULT GetField(
[in] PVOID pvData,
[in] LPCOLESTR szFieldName,
[out] VARIANT * pvarField
);
HRESULT GetFieldNoCopy(
[in] PVOID pvData,
[in] LPCOLESTR szFieldName,
[out] VARIANT * pvarField,
[out] PVOID * ppvDataCArray
);
HRESULT PutField(
[in] ULONG wFlags,
[in,out] PVOID pvData,
[in] LPCOLESTR szFieldName,
[in] VARIANT * pvarField
);
HRESULT PutFieldNoCopy(
[in] ULONG wFlags,
[in,out] PVOID pvData,
[in] LPCOLESTR szFieldName,
[in] VARIANT * pvarField
);
HRESULT GetFieldNames(
[in,out] ULONG * pcNames,
[out,size_is(*pcNames),length_is(*pcNames)] BSTR * rgBstrNames
);
BOOL IsMatchingType(
[in] IRecordInfo * pRecordInfo
);
PVOID RecordCreate(
);
HRESULT RecordCreateCopy(
[in] PVOID pvSource,
[out] PVOID * ppvDest
);
HRESULT RecordDestroy(
[in] PVOID pvRecord
);
}
[
object,
uuid(3127CA40-446E-11CE-8135-00AA004BB851),
pointer_default(unique)
]
interface IErrorLog : IUnknown
{
typedef IErrorLog * LPERRORLOG;
HRESULT AddError(
[in] LPCOLESTR pszPropName,
[in] EXCEPINFO * pExcepInfo
);
}
[
object,
uuid(55272A00-42CB-11CE-8135-00AA004BB851),
pointer_default(unique)
]
interface IPropertyBag : IUnknown
{
typedef IPropertyBag * LPPROPERTYBAG;
[local]
HRESULT Read(
[in] LPCOLESTR pszPropName,
[in, out] VARIANT * pVar,
[in] IErrorLog * pErrorLog
);
[call_as(Read)]
HRESULT RemoteRead(
[in] LPCOLESTR pszPropName,
[out] VARIANT * pVar,
[in] IErrorLog * pErrorLog,
[in] DWORD varType,
[in] IUnknown * pUnkObj
);
HRESULT Write(
[in] LPCOLESTR pszPropName,
[in] VARIANT * pVar
);
}
cpp_quote("#if ( _MSC_VER >= 800 )")
cpp_quote("#if _MSC_VER >= 1200")
cpp_quote("#pragma warning(pop)")
cpp_quote("#else")
cpp_quote("#pragma warning(default:4201) /* Nameless struct/union */")
cpp_quote("#endif")
cpp_quote("#endif")