3
我通過加載類型庫(TLB)並使用ITypeLib
和ITypeInfo
迭代類型來獲取COM函數的地址。 調用的ITypeInfo的AddressOfMember
功能後,我面臨着以下異常:爲什麼異常發生獲取COM函數的地址?
System.Runtime.InteropServices.COMException(0x800288BD):錯誤的模塊種類的操作。 (來自HRESULT的異常:0x800288BD(TYPE_E_BADMODULEKIND))在System.Runtime.InteropServices.ComTypes.ITypeInfo.AddressOfMember(Int32 memid,INVOKEKIND invKind,IntPtr & ppv)。
如何擺脫此異常?
你確定你試圖獲取地址的接口支持vtable綁定嗎? – tyranid 2010-05-15 07:44:49
我已經給它IDispatch雙接口實現COM組件仍然失敗。當我的所有接口都從IUnknown繼承而來,當GetNames(..)給我「QueryInterface」時,它在這裏也失敗了,這裏的FUNCDESC.memid(一些例如1245781)似乎是錯誤的。 我很奇怪用ITypeInfo和其他所有結構正確列舉的所有東西,但AddressOfMember無法提供地址 – Usman 2010-05-15 08:34:22
我認爲所有IUnknown綁定的COM組件都綁定了vtabled。 – Usman 2010-05-15 08:34:54