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

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

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

在过程中, thunking总是只能从高位到低位,而不是相反。 当Win32出来的时候,一个32位的进程可能导致一个16位的dll,但是32位的dll根本无法进入一个16位的进程。 现在也是如此,一个32位的dll可以插入到64位的进程中,但是64位的dll不能插入32位的进程(除了WOW64模拟器的DLL :Wow64.dll,wow64Win .dll和Wow64Cpu.dll)。

如果你想加载一个64位的COM进程DLL,你将需要一个进程外的64位加载器,你的32位应用程序可以与加载进行通信,并为调用传递必要的参数,并接收结果。

对于进程外64位COM本地服务器,您将需要32位代理DLL,请参阅32位和64位应用程序之间的进程间通信 。