使用32位进程的64位COM对象

时间:2010-05-01 19:27:32

标签: windows com 64-bit virtualbox wow64

我正在使用在Windows上使用COM的virtualbox api。如果你有64位操作系统,它将安装64位版本,64位客户端可以访问COM接口,但不能访问32位客户端。我被告知这是一个COM限制,但我已经看到ways使用dll32在注册表上“发布”32位接口,所以64位进程可以调用这些COM服务器,但我找不到逆,从32位进程访问64位接口。

如果我不是很清楚,我相信这个人想要达到类似的目的:http://www.codeproject.com/Forums/1648/COM.aspx?fid=1648&df=90&mpp=25&sort=Position&select=1702805&tid=1702805

1 个答案:

答案 0 :(得分: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 in-process-dll,则需要一个进程外64位加载程序,并且您的32位应用程序可以与加载的进行通信并传递调用所需的参数,以及收到结果。

对于进程外64位COM本地服务器,您需要32位代理DLL,请参阅Interprocess Communication Between 32-bit and 64-bit Applications