2010-09-24 177 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位應用程序。這可能不是一個簡單的解決方案。

相關問題