Есть ли способ определить, указывают ли две ссылки на интерфейс COM на один и тот же экземпляр?

StackOverflow https://stackoverflow.com/questions/323289

  •  11-07-2019
  •  | 
  •  

Вопрос

Даны две ссылки на интерфейс, полученные из разных источников. Есть ли программный способ определить, реализованы ли они одним и тем же экземпляром?

Простая проверка на равенство ссылок на интерфейсы всегда заканчивается неудачей.

<Ч>

РЕДАКТИРОВАТЬ: . Большие части исходного вопроса, который оказался независимой, теперь перемещены в новый вопрос .

Это было полезно?

Решение

Вы можете запросить интерфейс IUnknown и сравнить эти указатели. Все остальные указатели интерфейса не гарантированно возвращают одно и то же значение каждый раз.

из Правил объектной модели компонентов :

  

Идентификация объекта. Требуется, чтобы любой вызов QueryInterface на любом интерфейсе для данного экземпляра объекта для определенного интерфейса IUnknown всегда возвращал одно и то же значение физического указателя. Это позволяет вызывать QueryInterface (IID_IUnknown, ...) для любых двух интерфейсов и сравнивать результаты, чтобы определить, указывают ли они на один и тот же экземпляр объекта (одинаковую идентичность COM-объекта).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top