2010-03-19 1 views
1

모든 COM 개체는 integrity이어야합니다. 단순화 측면에서이 물체가 3 인터페이스를 구현하는 경우 있음을 의미 - A, BC 내가 객체에 A* 포인터가를 내가 검색 할 수 있어야 성공적으로 QueryInterface() 모두 BC와 가진 B 할 수 있어야 ACC을 가지고있는 경우 AB을 검색 할 수 있어야합니다.COM 개체 무결성을 자동으로 테스트하는 방법?

이제 내 개체는 5 개의 인터페이스를 구현하며 무결성을 테스트하려고합니다. 위의 모든 것에 대한 수표를 쓰려면 상당한 노력이 필요합니다. 도구 또는 쉽게 조정할 수있는 코드 또는 코드 패턴이 있습니까?

답변

2

문제가 표시되지 않습니다. A, B 및 C를 구현하면 A, B, C 및 IUnknown에 대해 인터페이스 A가 적절하게 QI해야합니다. 자체 포함. 테스트는 모든 인터페이스에서 동일합니다. IUnknown * 인수를 취하는 하나의 작은 함수 만 있으면됩니다.

+0

이 좋았어요 (I가 검색되지 않았다), 잘 작동합니다. 테스트 할 인터페이스 집합에 IUnknown을 추가하면 더욱 간단 해집니다. – sharptooth

1

올바르게 이해한다면 구현이 COM IUnknown 규칙 (전이 성, 반사성 등)을 준수한다는 것을 증명하고 인터페이스의 수에 따라 기하 급수적으로 폭발하는 것에 관심이 있습니까?

구성 요소 유형 라이브러리가 있으면 coclasses/인터페이스를 파악하고 이러한 규칙을 테스트하는 코드를내는 응용 프로그램을 작성할 수 있습니다.이 응용 프로그램은 일반적이고 형식 라이브러리가있는 모든 구성 요소와 함께 사용할 수 있습니다. 어쩌면 당신은 심지어 그물을 찾을 수 있습니다

최저

아드리아노

+0

실제적으로 지수 노출은 20 개가 넘는 인터페이스를 구현하는 어떤 객체도 상상하기 어렵 기 때문에 문제가 아닙니다. 문제는 필요한 모든 QI() 요청 경로를 확실히 테스트하는 코드를 작성하는 방법입니다. – sharptooth