我正在编写一个 C++ 类,它至少使用 Windows API 的一个 COM 接口。显然,在类中使用这些对象时,我需要正确调用AddRef()
and Release()
。
我的问题是......我是否需要IUnknown
在 C++ 类本身中额外实现?我的理解是,如果我使用的接口正在执行异步操作或回调,我只需要这样做。在这种情况下,您需要确保在异步操作或回调完成时 C++ 类本身仍然“活动”。它是否正确?
为了澄清(以及根据 Hans 的评论),我感兴趣的特定界面是IMFSourceReader
(Windows Media Foundation)。该接口默认为同步模式。IUnknown
再说一次,如果我理解正确,如果我选择在异步模式下使用它,我只需要在我的 C++ 类中实现。否则调用IMFSourceReader->AddRef()
orIMFSourceReader->Release
就足够了。
但是,如果我选择IMFSourceReader
在异步模式下使用,则需要IMFSourceReaderCallback
接口,它本身继承了IUnknown
. 在那种情况下,我必须在课堂上实现它。
我的理解正确吗?我仍处于编写实现的早期阶段,所以我没有真正的示例代码可以分享。在这一点上,我只是想确定我班级的基本结构。