使用32位进程中的64位com对象
-
02-10-2019 - |
题
我正在使用使用Windows上COM的VirtualBox API。如果您有64位OS,它将安装64个位版本,并且COM接口将可供64位客户端访问,但不能访问32位。有人告诉我这是一个限制,但我已经看到 方法 要使用DLL32在注册表上“发布” 32个位接口,因此64位进程可以调用这些COM服务器,但是我找不到逆,从32位进程中访问64位接口。
如果我不太清楚,我相信这个人想获得类似的东西: http://www.codeproject.com/forums/1648/com.aspx?fid=1648&df=90&mpp = 25&sort = pisition&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位应用程序之间的交流通信.
不隶属于 StackOverflow