hdirect-0.21.0: comlib/TypeLib.idl
module TypeLib {
import "StdTypes.idl";
cpp_quote("#include \"StdTypes.h\"");
cpp_quote("typedef void* VARIANT;");
cpp_quote("typedef void* BSTR;");
cpp_quote("typedef DWORD HRESULT;");
cpp_quote("typedef void* IUnknown;");
typedef struct tagSAFEARRAYBOUND {
ULONG cElements;
LONG lLbound;
} SAFEARRAYBOUND, * LPSAFEARRAYBOUND;
//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;
// Added sof.
typedef VARIANT VARIANTARG;
// parameter description
typedef struct tagPARAMDESCEX {
ULONG cBytes; /* size of this structure */
VARIANTARG varDefaultValue; /* default value of this parameter */
} PARAMDESCEX;
typedef [unique]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 [nofree]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("#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_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 [v1_enum] enum tagVARKIND {
VAR_PERINSTANCE,
VAR_STATIC,
VAR_CONST,
VAR_DISPATCH
} VARKIND;
typedef [nofree]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;
/* IMPLTYPE Flags */
const USHORT IMPLTYPEFLAG_FDEFAULT = 0x1;
const USHORT IMPLTYPEFLAG_FSOURCE = 0x2;
const USHORT IMPLTYPEFLAG_FRESTRICTED = 0x4;
const USHORT IMPLTYPEFLAG_FDEFAULTVTABLE= 0x8;
typedef [nofree]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
} 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;
interface ITypeInfo;
interface ITypeLib;
[
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,
[out] 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
);
}
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;
[
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
);
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] VARIANT * pVarResult,
[out] EXCEPINFO * pExcepInfo,
[out] UINT * pArgErr,
[in] UINT cVarRef,
[in, size_is(cVarRef)] UINT * rgVarRefIdx,
[in, out, size_is(cVarRef)] VARIANTARG * rgVarRef
);
[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,ref] IID* riid,
[out, iid_is(riid)] PVOID * ppvObj
);
[call_as(CreateInstance)]
HRESULT RemoteCreateInstance(
[in,ref] IID* 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,ptr] TYPEATTR * pTypeAttr
);
[call_as(ReleaseTypeAttr)]
HRESULT LocalReleaseTypeAttr(
void
);
[local]
void ReleaseFuncDesc(
[in,ptr] FUNCDESC * pFuncDesc
);
[call_as(ReleaseFuncDesc)]
HRESULT LocalReleaseFuncDesc(
void
);
[local]
void ReleaseVarDesc(
[in,ptr] 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 [nofree]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,ptr] 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] GUID* 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
);
}
};