有没有办法判断两个 COM 接口引用是否指向同一个实例?

发布于 2024-07-09 15:31:10 字数 210 浏览 6 评论 0原文

给出从不同来源获得的两个接口引用。 是否有一种编程方式来判断它们是否由同一实例实现?

对接口引用进行简单的相等性检查总是会失败。


编辑:原始问题的大部分(原来是一个独立的问题)现在已移至一个新的问题

Given two interface references obtained from different sources. Is there a programmatic way to tell whether they're implemented by the same instance?

A simple equality check of the interface references always fails.


EDIT: Large parts of the original question, which turned out to be an independent problem have now been moved to a new question.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟柳画桥 2024-07-16 15:31:10

您可以查询 IUnknown 接口并比较这些指针。 不保证所有其他接口指针每次都返回相同的值。

来自组件对象模型的规则

对象标识。对于特定接口 IUnknown 的给定对象实例,在任何接口上对 QueryInterface 的任何调用都必须始终返回相同的物理指针值。 这样就可以在任意两个接口上调用 QueryInterface(IID_IUnknown, ...) 并比较结果以确定它们是否指向同一对象实例(相同的 COM 对象标识)。

You could query for the IUnknown interface and compare these pointers. All other interface pointers are not guaranteed to return the same value each time.

from The Rules of the Component Object Model:

Object identity. It is required that any call to QueryInterface on any interface for a given object instance for the specific interface IUnknown must always return the same physical pointer value. This enables calling QueryInterface(IID_IUnknown, ...) on any two interfaces and comparing the results to determine whether they point to the same instance of an object (the same COM object identity).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文