谁负责清理[in] VARIANT参数?

时间:2015-04-19 00:58:39

标签: com ole ole-automation

在具有[in] VARIANT param的界面中,调用者是否拥有复制到其中的VARIANT?被调用者是否应该在值上调用VariantClear(或ATL CComVariant::Attach)以确保它被清除?是否记录了自动化内存管理规则(添加到COM memory management)?

我知道[in] VARIANT *param是调用者拥有的指针,但是[in] VARIANT param是一个复制到被调用者的结构,所以它有点奇怪。如果没有转让所有权,那么为什么有人甚至会使用[in] VARIANT param来定义接口?在stdcall x86和x86_64调用约定中,它永远不适合寄存器,因此它不比[in] VARIANT *param更有效,所以它看起来毫无意义。

我在问,因为我想知道如何实施IUIAutomationPropertyChangedEventHandler::HandlePropertyChangedEvent

0 个答案:

没有答案