- removed hack to find the right resource
- updated to use the ICOM macros - cleaned up use typelib and typelib2 (was mixed up)
This commit is contained in:
parent
5370930a8a
commit
07b143ed4d
|
@ -133,7 +133,7 @@ import ole32.dll
|
|||
149 stdcall SysStringByteLen(ptr) SysStringByteLen
|
||||
150 stdcall SysAllocStringByteLen(ptr long) SysAllocStringByteLen
|
||||
160 stub CreateTypeLib
|
||||
161 stdcall LoadTypeLib (ptr ptr) LoadTypeLib
|
||||
161 stdcall LoadTypeLib (wstr ptr) LoadTypeLib
|
||||
162 stdcall LoadRegTypeLib (ptr long long long ptr) LoadRegTypeLib
|
||||
163 stdcall RegisterTypeLib(ptr str str) RegisterTypeLib
|
||||
164 stdcall QueryPathOfRegTypeLib(ptr long long long ptr) QueryPathOfRegTypeLib
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,114 +20,6 @@
|
|||
#define HREFTYPE_INTHISFILE(href) (!((href) & 3))
|
||||
#define HREFTYPE_INDEX(href) ((href) /sizeof(TLBTypeInfoBase))
|
||||
|
||||
typedef struct tagTLBCustData {
|
||||
GUID guid;
|
||||
VARIANT data;
|
||||
struct tagTLBCustData* next;
|
||||
} TLBCustData;
|
||||
|
||||
/* internal Parameter data */
|
||||
typedef struct tagTLBParDesc{
|
||||
PCHAR Name;
|
||||
int ctCustData;
|
||||
TLBCustData * pCustData; /* linked list to cust data; */
|
||||
} TLBParDesc;
|
||||
|
||||
|
||||
/* internal Function data */
|
||||
typedef struct tagTLBFuncDesc{
|
||||
FUNCDESC funcdesc; /* lots of info on the function and its attributes. */
|
||||
PCHAR Name; /* the name of this function */
|
||||
TLBParDesc *pParamDesc; /* array with name and custom data */
|
||||
int helpcontext;
|
||||
int HelpStringContext;
|
||||
PCHAR HelpString;
|
||||
PCHAR Entry; /* if its Hiword==0, it numeric; -1 is not present*/
|
||||
int ctCustData;
|
||||
TLBCustData * pCustData; /* linked list to cust data; */
|
||||
struct tagTLBFuncDesc * next;
|
||||
} TLBFuncDesc;
|
||||
|
||||
/* internal Variable data */
|
||||
typedef struct tagTLBVarDesc{
|
||||
VARDESC vardesc; /* lots of info on the variable and its attributes. */
|
||||
PCHAR Name; /* the name of this variable */
|
||||
int HelpContext;
|
||||
int HelpStringContext; /* fixme: where? */
|
||||
PCHAR HelpString;
|
||||
int ctCustData;
|
||||
TLBCustData * pCustData;/* linked list to cust data; */
|
||||
struct tagTLBVarDesc * next;
|
||||
} TLBVarDesc;
|
||||
|
||||
/* data for refernced types in a coclass, or an inherited interface */
|
||||
typedef struct tagTLBRefType {
|
||||
GUID guid; /* guid of the referenced type */
|
||||
/* (important if its a imported type) */
|
||||
HREFTYPE reference;
|
||||
int flags;
|
||||
int ctCustData;
|
||||
TLBCustData * pCustData;/* linked list to custom data; */
|
||||
struct tagTLBImpLib *pImpTLInfo;
|
||||
struct tagTLBRefType * next;
|
||||
}TLBRefType;
|
||||
|
||||
/* internal TypeInfo data */
|
||||
typedef struct tagTYPEINFO {
|
||||
LPTYPEINFO_VTABLE lpvtbl;
|
||||
UINT ref;
|
||||
TYPEATTR TypeAttr ; /* _lots_ of type information. */
|
||||
struct tagTYPELIB * pTypeLib; /* back pointer to typelib */
|
||||
int index; /* index in this typelib; */
|
||||
/* type libs seem to store the doc strings in ascii
|
||||
* so why should we do it in unicode?
|
||||
*/
|
||||
PCHAR Name;
|
||||
PCHAR DocString;
|
||||
unsigned long dwHelpContext;
|
||||
unsigned long dwHelpStringContext;
|
||||
|
||||
/* functions */
|
||||
TLBFuncDesc * funclist; /* linked list with function descriptions */
|
||||
/* variables */
|
||||
TLBVarDesc * varlist; /* linked list with variable descriptions */
|
||||
/* Implemented Interfaces */
|
||||
TLBRefType * impltypelist;
|
||||
int ctCustData;
|
||||
TLBCustData * pCustData; /* linked list to cust data; */
|
||||
struct tagTYPEINFO * next;
|
||||
} TLBTypeInfo;
|
||||
|
||||
/* data structure for import typelibs */
|
||||
typedef struct tagTLBImpLib {
|
||||
int offset; /* offset in the file */
|
||||
GUID guid; /* libid */
|
||||
PCHAR name; /* name; */
|
||||
struct tagTYPELIB *pImpTypeLib; /* pointer to loaded typelib */
|
||||
struct tagTLBImpLib * next;
|
||||
} TLBImpLib;
|
||||
|
||||
/* internal TypeLib data */
|
||||
typedef struct tagTYPELIB {
|
||||
LPTYPELIB_VTABLE lpvtbl;
|
||||
UINT ref;
|
||||
TLIBATTR LibAttr; /* guid,lcid,syskind,version,flags */
|
||||
/* type libs seem to store the doc strings in ascii
|
||||
* so why should we do it in unicode?
|
||||
*/
|
||||
PCHAR Name;
|
||||
PCHAR DocString;
|
||||
PCHAR HelpFile;
|
||||
PCHAR HelpStringDll;
|
||||
unsigned long dwHelpContext;
|
||||
int TypeInfoCount; /* nr of typeinfo's in librarry */
|
||||
TLBTypeInfo *pTypeInfo; /* linked list of type info data */
|
||||
int ctCustData; /* number of items in cust data list */
|
||||
TLBCustData * pCustData; /* linked list to cust data; */
|
||||
TLBImpLib * pImpLibs; /* linked list to all imported typelibs */
|
||||
TYPEDESC * pTypeDesc; /* array of TypeDescriptions found in the libary */
|
||||
} TLBLibInfo;
|
||||
|
||||
/*-------------------------FILE STRUCTURES-----------------------------------*/
|
||||
|
||||
|
||||
|
|
|
@ -565,38 +565,8 @@ ICOM_DEFINE(IDispatch,IUnknown)
|
|||
ICOM_METHOD2(HRESULT,GetContainingTypeLib, ITypeLib**,ppTLib, UINT*,pIndex) \
|
||||
ICOM_METHOD1(HRESULT,ReleaseTypeAttr, TYPEATTR*,pTypeAttr) \
|
||||
ICOM_METHOD1(HRESULT,ReleaseFuncDesc, FUNCDESC*,pFuncDesc) \
|
||||
ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)\
|
||||
\
|
||||
\
|
||||
/* itypeinfo2 methods */\
|
||||
ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
|
||||
ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
|
||||
ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
|
||||
invKind, UINT*, pFuncIndex) \
|
||||
ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
|
||||
pVarIndex) \
|
||||
ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
|
||||
ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
|
||||
VARIANT*, pVarVal) \
|
||||
ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
|
||||
indexParam, REFGUID, guid, VARIANT*, pVarVal) \
|
||||
ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
|
||||
VARIANT*, pVarVal) \
|
||||
ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
|
||||
VARIANT*, pVarVal) \
|
||||
ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
|
||||
BSTR*, pbstrHelpString, INT*, pdwHelpStringContext,\
|
||||
BSTR*, pbstrHelpStringDll) \
|
||||
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
|
||||
ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
|
||||
pCustData)\
|
||||
ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
|
||||
indexParam, CUSTDATA*, pCustData) \
|
||||
ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
|
||||
pCustData) \
|
||||
ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
|
||||
pCustData)
|
||||
|
||||
ICOM_METHOD1(HRESULT,ReleaseVarDesc, VARDESC*,pVarDesc)
|
||||
|
||||
#define ITypeInfo_IMETHODS \
|
||||
IUnknown_IMETHODS \
|
||||
ITypeInfo_METHODS
|
||||
|
@ -629,6 +599,87 @@ ICOM_DEFINE(ITypeInfo,IUnknown)
|
|||
#define ITypeInfo_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* ITypeInfo2 interface
|
||||
*/
|
||||
#define ICOM_INTERFACE ITypeInfo2
|
||||
#define ITypeInfo2_METHODS \
|
||||
ICOM_METHOD1(HRESULT, GetTypeKind, TYPEKIND*, pTypeKind) \
|
||||
ICOM_METHOD1(HRESULT, GetTypeFlags, UINT*, pTypeFlags) \
|
||||
ICOM_METHOD3(HRESULT, GetFuncIndexOfMemId, MEMBERID, memid, INVOKEKIND,\
|
||||
invKind, UINT*, pFuncIndex) \
|
||||
ICOM_METHOD2(HRESULT, GetVarIndexOfMemId, MEMBERID, memid, UINT*, \
|
||||
pVarIndex) \
|
||||
ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
|
||||
ICOM_METHOD3(HRESULT, GetFuncCustData, UINT, index, REFGUID, guid,\
|
||||
VARIANT*, pVarVal) \
|
||||
ICOM_METHOD4(HRESULT, GetParamCustData, UINT, indexFunc, UINT,\
|
||||
indexParam, REFGUID, guid, VARIANT*, pVarVal) \
|
||||
ICOM_METHOD3(HRESULT, GetVarCustData, UINT, index, REFGUID, guid,\
|
||||
VARIANT*, pVarVal) \
|
||||
ICOM_METHOD3(HRESULT, GetImplTypeCustData, UINT, index, REFGUID, guid,\
|
||||
VARIANT*, pVarVal) \
|
||||
ICOM_METHOD5(HRESULT, GetDocumentation2, MEMBERID, memid, LCID, lcid,\
|
||||
BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext,\
|
||||
BSTR*, pbstrHelpStringDll) \
|
||||
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA*, pCustData) \
|
||||
ICOM_METHOD2(HRESULT, GetAllFuncCustData, UINT, index, CUSTDATA*,\
|
||||
pCustData)\
|
||||
ICOM_METHOD3(HRESULT, GetAllParamCustData, UINT, indexFunc, UINT,\
|
||||
indexParam, CUSTDATA*, pCustData) \
|
||||
ICOM_METHOD2(HRESULT, GetAllVarCustData, UINT, index, CUSTDATA*,\
|
||||
pCustData) \
|
||||
ICOM_METHOD2(HRESULT, GetAllImplTypeCustData, UINT, index, CUSTDATA*,\
|
||||
pCustData)
|
||||
|
||||
#define ITypeInfo2_IMETHODS \
|
||||
IUnknown_IMETHODS \
|
||||
ITypeInfo_METHODS \
|
||||
ITypeInfo2_METHODS
|
||||
ICOM_DEFINE(ITypeInfo2,ITypeInfo)
|
||||
#undef ICOM_INTERFACE
|
||||
|
||||
/*** IUnknown methods ***/
|
||||
#define ITypeInfo2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
||||
#define ITypeInfo2_AddRef(p) ICOM_CALL (AddRef,p)
|
||||
#define ITypeInfo2_Release(p) ICOM_CALL (Release,p)
|
||||
/*** ITypeInfo methods ***/
|
||||
#define ITypeInfo2_GetTypeAttr(p,a) ICOM_CALL1(GetTypeAttr,p,a)
|
||||
#define ITypeInfo2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
|
||||
#define ITypeInfo2_GetFuncDesc(p,a,b) ICOM_CALL2(GetFuncDesc,p,a,b)
|
||||
#define ITypeInfo2_GetVarDesc(p,a,b) ICOM_CALL2(GetVarDesc,p,a,b)
|
||||
#define ITypeInfo2_GetNames(p,a,b,c,d) ICOM_CALL4(GetNames,p,a,b,c,d)
|
||||
#define ITypeInfo2_GetRefTypeOfImplType(p,a,b) ICOM_CALL2(GetRefTypeOfImplType,p,a,b)
|
||||
#define ITypeInfo2_GetImplTypeFlags(p,a,b) ICOM_CALL2(GetImplTypeFlags,p,a,b)
|
||||
#define ITypeInfo2_GetIDsOfNames(p,a,b,c) ICOM_CALL3(GetIDsOfNames,p,a,b,c)
|
||||
#define ITypeInfo2_Invoke(p,a,b,c,d,e,f,g) ICOM_CALL7(Invoke,p,a,b,c,d,e,f,g)
|
||||
#define ITypeInfo2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
|
||||
#define ITypeInfo2_GetDllEntry(p,a,b,c,d,e) ICOM_CALL5(GetDllEntry,p,a,b,c,d,e)
|
||||
#define ITypeInfo2_GetRefTypeInfo(p,a,b) ICOM_CALL2(GetRefTypeInfo,p,a,b)
|
||||
#define ITypeInfo2_AddressOfMember(p,a,b,c) ICOM_CALL3(AddressOfMember,p,a,b,c)
|
||||
#define ITypeInfo2_CreateInstance(p,a,b,c) ICOM_CALL3(CreateInstance,p,a,b,c)
|
||||
#define ITypeInfo2_GetMops(p,a,b) ICOM_CALL2(GetMops,p,a,b)
|
||||
#define ITypeInfo2_GetContainingTypeLib(p,a,b) ICOM_CALL2(GetContainingTypeLib,p,a,b)
|
||||
#define ITypeInfo2_ReleaseTypeAttr(p,a) ICOM_CALL1(ReleaseTypeAttr,p,a)
|
||||
#define ITypeInfo2_ReleaseFuncDesc(p,a) ICOM_CALL1(ReleaseFuncDesc,p,a)
|
||||
#define ITypeInfo2_ReleaseVarDesc(p,a) ICOM_CALL1(ReleaseVarDesc,p,a)
|
||||
/*** ITypeInfo2 methods ***/
|
||||
#define ITypeInfo2_GetTypeKind(p,a) ICOM_CALL1(GetTypeKind,p,a)
|
||||
#define ITypeInfo2_GetTypeFlags(p,a) ICOM_CALL1(GetTypeFlags,p,a)
|
||||
#define ITypeInfo2_GetFuncIndexOfMemId(p,a,b,c) ICOM_CALL3(GetFuncIndexOfMemId,p,a,b,c)
|
||||
#define ITypeInfo2_GetVarIndexOfMemId(p,a,b) ICOM_CALL2(GetVarIndexOfMemId,p,a,b)
|
||||
#define ITypeInfo2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
|
||||
#define ITypeInfo2_GetFuncCustData(p,a,b,c) ICOM_CALL3(GetFuncCustData,p,a,b,c)
|
||||
#define ITypeInfo2_GetParamCustData(p,a,b,c,d) ICOM_CALL4(GetParamCustData,p,a,b,c,d)
|
||||
#define ITypeInfo2_GetVarCustData(p,a,b,c) ICOM_CALL3(GetVarCustData,p,a,b,c)
|
||||
#define ITypeInfo2_GetImplTypeCustData(p,a,b,c) ICOM_CALL3(GetImplTypeCustData,p,a,b,c)
|
||||
#define ITypeInfo2_GetDocumentation2(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
|
||||
#define ITypeInfo2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
|
||||
#define ITypeInfo2_GetAllFuncCustData(p,a,b) ICOM_CALL2(GetAllFuncCustData,p,a,b)
|
||||
#define ITypeInfo2_GetAllParamCustData(p,a,b,c) ICOM_CALL3(GetAllParamCustData,p,a,b,c)
|
||||
#define ITypeInfo2_GetAllVarCustData(p,a,b) ICOM_CALL2(GetAllVarCustData,p,a,b)
|
||||
#define ITypeInfo2_GetAllImplTypeCustData(p,a,b) ICOM_CALL2(GetAllImplTypeCustData,p,a,b)
|
||||
|
||||
/*****************************************************************************
|
||||
* ITypeLib interface
|
||||
*/
|
||||
|
@ -643,16 +694,7 @@ ICOM_DEFINE(ITypeInfo,IUnknown)
|
|||
ICOM_METHOD5(HRESULT,GetDocumentation, INT,index, BSTR*,pBstrName, BSTR*,pBstrDocString, DWORD*,pdwHelpContext, BSTR*,pBstrHelpFile) \
|
||||
ICOM_METHOD3(HRESULT,IsName, LPOLESTR,szNameBuf, ULONG,lHashVal, BOOL*,bfName) \
|
||||
ICOM_METHOD5(HRESULT,FindName, LPOLESTR,szNameBuf, ULONG,lHashVal, ITypeInfo**,ppTInfo, MEMBERID*,rgMemId, USHORT*,pcFound) \
|
||||
ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)\
|
||||
\
|
||||
ICOM_METHOD2(HRESULT,GetCustData, REFGUID,guid, VARIANT*, pVarVal)\
|
||||
ICOM_METHOD2(HRESULT, GetLibStatistics, UINT *,pcUniqueNames, \
|
||||
UINT*, pcchUniqueNames) \
|
||||
ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,\
|
||||
BSTR*, pbstrHelpString, INT*, pdwHelpStringContext,\
|
||||
BSTR*, pbstrHelpStringDll)\
|
||||
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
|
||||
|
||||
ICOM_METHOD1(VOID,ReleaseTLibAttr, TLIBATTR*,pTLibAttr)
|
||||
#define ITypeLib_IMETHODS \
|
||||
IUnknown_IMETHODS \
|
||||
ITypeLib_METHODS
|
||||
|
@ -676,6 +718,43 @@ ICOM_DEFINE(ITypeLib,IUnknown)
|
|||
#define ITypeLib_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
* ITypeLib2 interface
|
||||
*/
|
||||
#define ICOM_INTERFACE ITypeLib2
|
||||
#define ITypeLib2_METHODS \
|
||||
ICOM_METHOD2(HRESULT, GetCustData, REFGUID, guid, VARIANT*, pVarVal) \
|
||||
ICOM_METHOD2(HRESULT, GetLibStatistics, ULONG *, pcUniqueNames, ULONG*,pcchUniqueNames) \
|
||||
ICOM_METHOD5(HRESULT, GetDocumentation2, INT, index, LCID, lcid,BSTR*, pbstrHelpString, DWORD*, pdwHelpStringContext, BSTR*, strHelpStringDll) \
|
||||
ICOM_METHOD1(HRESULT, GetAllCustData, CUSTDATA *, pCustData)
|
||||
#define ITypeLib2_IMETHODS \
|
||||
IUnknown_IMETHODS \
|
||||
ITypeLib_IMETHODS \
|
||||
ITypeLib2_METHODS
|
||||
ICOM_DEFINE(ITypeLib2,ITypeLib)
|
||||
#undef ICOM_INTERFACE
|
||||
|
||||
/*** IUnknown methods ***/
|
||||
#define ITypeLib2_QueryInterface(p,a,b) ICOM_CALL2(QueryInterface,p,a,b)
|
||||
#define ITypeLib2_AddRef(p) ICOM_CALL (AddRef,p)
|
||||
#define ITypeLib2_Release(p) ICOM_CALL (Release,p)
|
||||
/*** ITypeLib methods ***/
|
||||
#define ITypeLib2_GetTypeInfoCount(p) ICOM_CALL (GetTypeInfoCount,p)
|
||||
#define ITypeLib2_GetTypeInfo(p,a,b) ICOM_CALL2(GetTypeInfo,p,a,b)
|
||||
#define ITypeLib2_GetTypeInfoType(p,a,b) ICOM_CALL2(GetTypeInfoType,p,a,b)
|
||||
#define ITypeLib2_GetTypeInfoOfGuid(p,a,b) ICOM_CALL2(GetTypeInfoOfGuid,p,a,b)
|
||||
#define ITypeLib2_GetLibAttr(p,a) ICOM_CALL1(GetLibAttr,p,a)
|
||||
#define ITypeLib2_GetTypeComp(p,a) ICOM_CALL1(GetTypeComp,p,a)
|
||||
#define ITypeLib2_GetDocumentation(p,a,b,c,d,e) ICOM_CALL5(GetDocumentation,p,a,b,c,d,e)
|
||||
#define ITypeLib2_IsName(p,a,b,c) ICOM_CALL3(IsName,p,a,b,c)
|
||||
#define ITypeLib2_FindName(p,a,b,c,d,e) ICOM_CALL5(FindName,p,a,b,c,d,e)
|
||||
#define ITypeLib2_ReleaseTLibAttr(p,a) ICOM_CALL1(ReleaseTLibAttr,p,a)
|
||||
/*** ITypeLib2 methods ***/
|
||||
#define ITypeLib2_GetCustData(p,a,b) ICOM_CALL2(GetCustData,p,a,b)
|
||||
#define ITypeLib2_GetLibStatistics(p,a,b) ICOM_CALL2(GetLibStatistics,p,a,b)
|
||||
#define ITypeLib2_GetDocumentation2(p,a,b,c,d,e,f) ICOM_CALL5(GetDocumentation2,p,a,b,c,d,e)
|
||||
#define ITypeLib2_GetAllCustData(p,a) ICOM_CALL1(GetAllCustData,p,a)
|
||||
|
||||
/*****************************************************************************
|
||||
* ITypeComp interface
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue