2010-05-01 101 views
1

我正在使用在Windows上使用COM的virtualbox API。如果你有一個64位的操作系統,它將安裝64位版本,COM接口可以被64位客戶端訪問,但不能訪問32位的客戶端。我被告知這是一個COM限制,但我看到ways使用dll32在註冊表中「發佈」32位接口,所以64位進程可以調用這些COM服務器,但是我找不到相反的,訪問64位來自32位進程的接口。使用來自32位處理器的64位COM對象

如果我不是很清楚,我相信這個人想達到類似的東西:http://www.codeproject.com/Forums/1648/COM.aspx?fid=1648&df=90&mpp=25&sort=Position&select=1702805&tid=1702805

回答

4

在過程thunking將始終從更高位數只只工作來降低的,而不是周圍的其他方式。當Win32出來時,一個32位的進程可能會阻塞一個16位的dll,但是32位的dll根本無法進入16位的進程。現在也是如此,一個32位的dll可以插入一個64位的進程,但是64位的dll不能插入32位的進程(除了WOW64 emulator DLLs:Wow64.dll,wow64Win.dll和Wow64Cpu.dll)。

如果你想加載一個64位的COM進程DLL,你需要一個進程外64位加載程序,你的32位應用程序可以與加載進行通信並傳遞調用所需的參數,並收到結果。

對於進程外64位COM本地服務器,您需要32位代理DLL,請參閱Interprocess Communication Between 32-bit and 64-bit Applications

相關問題