首页 > 解决方案 > 谁是 IDataObject::GetData 呈现的数据的所有者?

问题描述

关于该问题的文档措辞有些令人困惑。首先它说:

然后调用者负责释放 STGMEDIUM 结构

然后在参数说明中:

指向 STGMEDIUM 结构的指针,指示包含通过其 tymed 成员返回的数据的存储介质,以及通过其 pUnkForRelease 成员的值释放介质的责任。

我无法得出一个可靠的结论,即我是其中的所有者,并且可以在不复制数据的情况下修改数据。通过 pUnkForRelease 释放的义务使得从函数返回介质句柄(例如 HBITMAP 或其他)是不可能的。因此,我对数据的所有权受到限制,如果它存在的话。

我不想制作不必要的副本。我认为 IDataObject 的实现者必须制作数据的副本,即使它与源数据相同,因为没有什么说不允许用户修改它。那我为什么要再复制一次呢?我是它的所有者吗?

标签: c++windowswinapicomole

解决方案


推荐阅读