何时在课堂上实现iunknown



我正在编写一个C 类,该类消耗了Windows API至少一个COM接口。显然,当在课堂内消耗这些对象时,我需要正确调用AddRef()Release()

我的问题是...我是否需要在C 类本身中额外实现IUnknown?我的理解是,只有当我使用的接口执行异步操作或回调时,我才需要做到这一点。在这种情况下,当异步操作或回调完成时,您需要确保C 类本身仍然"活着"。这是正确的吗?

为了澄清(并根据汉斯的评论)我感兴趣的特定接口是IMFSourceReader(Windows Media Foundation)。此接口默认为同步模式。因此,如果我正确理解这一点,那么如果我选择在异步模式下使用它,我只需要在C 类中实现IUnknown即可。否则对IMFSourceReader->AddRef()IMFSourceReader->Release的电话就足够了。

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

我的理解正确吗?我仍处于编写实现的早期阶段,因此我真的没有示例代码可共享。在这一点上

您仅在您自己实现com对象时才实现iunknown,而仅消耗com不需要您实现iunknown。

相关内容

  • 没有找到相关文章

最新更新