应用程序未返回时指向COM对象的指针

时间:2009-01-07 22:03:46

标签: com

我正在使用第三方应用程序,并调用创建我的 COM对象的实例。此调用成功,但第三方应用程序上的函数返回指向创建对象的指针(我不明白为什么)。有没有办法获得指向我的对象的指针?

澄清一下,这里有一些伪代码:

// This function has no return value!
ThirdPartyApp.CreateObject("MyObject");

2 个答案:

答案 0 :(得分:2)

创建对象后,使其在全局变量或其他类型的可共享存储位置中存储对自身的引用。然后从您的COM DLL导出一个函数,该函数将从该位置读取,以便您可以调用它并获取对先前创建的对象的引用。

此共享引用应该增加对象的引用计数,否则永远不会被销毁。当您的对象被销毁时,请确保清除该共享引用。

如果在同一进程中可以有多个此对象的实例,则可能需要管理列表而不是单个全局变量。

答案 1 :(得分:0)

  1. 存储您的返回值HRESULT(这是C ++吗?),它可能会产生线索。
  2. 如果您正在调用另一个公寓中存在的工厂类型对象,有时会出现偷偷摸摸的棘手的编组/创建问题。