2010-09-24 179 views
2

我们有一种情况,我们的产品之一是32位应用程序,但需要通过64位COM控件与仪器进行通信(其中包含64位设备驱动程序)。出于各种原因,我们不希望将此应用程序编译为64位应用程序,但我们希望在64位操作系统上运行它。由于驱动程序和COM控件必须是64位才能工作,因此我们有什么选择从32位端访问它们?从32位应用程序调用64位COM控件

任何人都可以在正确的方向指向我吗?

感谢

柯蒂斯

+0

您需要在另一个进程中运行它。然后使用一个进程间机制与它交谈。像进程外COM或命名管道一样。 – 2010-09-24 19:28:35

回答

6

只要COM接口只使用可以由COM子系统自动封送的类型(例如:自动兼容),就可以相当直接地工作。

您将需要确保另一个COM对象正在其自己的进程空间中运行;如果它不是这样设计的,那么把它放在[服务器类型] COM +应用程序中就足够了。

如果无法自动封送接口参数,或者COM对象无论出于何种原因都无法运行进程外,则需要一个满足这些要求的插页式模块(可以是另一个COM对象)。然而,让这个场景比一个简单的DLL更容易,所以你在游戏之前。

1

我不认为这是一个简单的解决方案。 32位应用程序无法调用到64位DLL(反之亦然)。经常提到的一种解决方案是使用某种IPC(进程间通信)代表应用程序调用DLL。这将是一种IPC thunking层。

对于您的情况,您需要一个“小”64位应用程序来实际调用64位COM控件对象并将结果传回给32位应用程序。这可能不是一个简单的解决方案。

相关问题