何时在类中实现 IUnknown

Mic*_*man -1 c++ com iunknown

我正在编写一个 C++ 类,它至少使用一个来自 Windows API 的 COM 接口。显然,在类中使用这些对象时,我需要正确调用AddRef()Release()

我的问题是……我是否需要IUnknown在 C++ 类本身中另外实现?我的理解是,如果我使用的接口正在执行异步操作或回调,我只需要这样做。在这种情况下,您需要确保在异步操作或回调完成时 C++ 类本身仍然“活跃”。这样对吗?

为了澄清(以及根据汉斯的评论),我感兴趣的特定界面是IMFSourceReader(Windows Media Foundation)。该接口默认为同步模式。再说一次,如果我理解正确,IUnknown如果我选择在异步模式下使用它,我只需要在我的 C++ 类中实现。否则调用IMFSourceReader->AddRef()IMFSourceReader->Release就足够了。

但是,如果我选择IMFSourceReader在异步模式下使用,则需要IMFSourceReaderCallback接口,该接口本身继承IUnknown. 在那种情况下,我必须在课堂上实现它。

我的理解正确吗?我仍处于编写实现的早期阶段,所以我真的没有可以分享的示例代码。在这一点上,我只是想确定我班级的基本结构。

Sor*_*tir 5

只有在您自己实现 COM 对象时才实现 IUnknown,仅使用 COM 不需要您实现 IUnknown。