2010-05-13 3 views
3

형식 라이브러리 (TLB)를로드하고 ITypeLibITypeInfo을 사용하여 형식을 반복하여 COM 함수의 주소를 가져 왔습니다.COM 함수의 주소를 가져 오는 중 예외가 발생하는 이유는 무엇입니까?

함께 System.Runtime.InteropServices.COMException (0x800288BD) : 조작에 대한 잘못된 모듈 종류 경우 ITypeInfo의 AddressOfMember 함수를 호출 한 후에 I는 다음과 같은 예외가 직면하고있다. (HRESULT 예외 : 0x800288BD (TYPE_E_BADMODULEKIND)) System.Runtime.InteropServices.ComTypes.ITypeInfo.AddressOfMember (Int32 memid, INVKKEININ invKind, IntPtr & ppv)에서.

이 예외를 제거하려면 어떻게해야합니까?

+0

주소를 가져 오려고하는 인터페이스가 vtable 바인딩을 지원하는지 확인 하시겠습니까? – tyranid

+0

IDispatch 이중 인터페이스 구현 된 COM 구성 요소가 여전히 실패했습니다. IUnknown에서 상속 된 모든 인터페이스와 GetNames (..)가 나에게 "QueryInterface"를 주었을 때, FUNCDESC.memid (예 : 1245781 등)도 여기에서 실패했습니다. ITypeInfo 및 다른 모든 구조로 올바르게 열거 된 모든 이상한데 AddressOfMember 주소를 전달할 수 없습니다. – Usman

+0

모든 IUnknown 바인딩 된 COM 구성 요소를 vtabled 바인딩 된 것 같아요. – Usman

답변

1

나는이 유형의 일을 전에하지 않았지만, 당신은 tlb 파일을로드하고 있다고 말하고 있습니까? addressof 회원의 경우 com 객체가 들어있는 dll을로드해야 할 수도 있습니다. 필자는 tlb 파일이 인터페이스에 대한 설명 일 뿐이므로 addressofmember에로드 할 코드가 없다고 생각할 수 있습니다.

관련 문제