동일한 인스턴스에서 두 개의 COM 인터페이스 참조가 가리키는 지 알 수있는 방법이 있습니까?
-
11-07-2019 - |
문제
다른 소스에서 얻은 두 개의 인터페이스 참조가 주어졌습니다. 동일한 인스턴스에서 구현되었는지 여부를 알 수있는 프로그래밍 방식이 있습니까?
인터페이스 참조의 단순한 평등 점검은 항상 실패합니다.
편집하다: 독립적 인 문제로 판명 된 원래 질문의 많은 부분이 이제 새로운 질문.
해결책
iunknown 인터페이스를 쿼리 하고이 포인터를 비교할 수 있습니다. 다른 모든 인터페이스 포인터는 매번 동일한 값을 반환하는 것을 보장하지 않습니다.
~에서 구성 요소 객체 모델의 규칙:
객체 아이덴티티. 특정 인터페이스에 대한 주어진 개체 인스턴스에 대한 인터페이스에서 QueryInterface 로의 호출은 항상 동일한 물리적 포인터 값을 반환해야합니다. 이를 통해 두 인터페이스에서 QueryInterface (IID_IUNKNOWN, ...)를 호출하고 결과를 비교하여 객체의 동일한 인스턴스 (동일한 COM 객체 아이덴티티)를 가리킬지 여부를 결정할 수 있습니다.
제휴하지 않습니다 StackOverflow