何时在类

时间:2017-12-01 17:42:35

标签: c++ com iunknown

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

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

为了澄清(以及Hans'评论),我感兴趣的具体界面是IMFSourceReader(Windows Media Foundation)。此接口默认为同步模式。所以,如果我理解正确的话,我只需要在我的C ++类中实现IUnknown,如果我选择在异步模式下使用它。否则,拨打IMFSourceReader->AddRef()IMFSourceReader->Release即可。

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

我的理解是否正确?我仍处于编写实现的早期阶段,因此我并没有真正拥有示例代码来共享。在这一点上,我只是试图让我班级的基本结构得到确定。

1 个答案:

答案 0 :(得分:3)

如果您自己实现COM对象,则只实现IUnknown,仅使用COM不需要实现IUnknown。