2010-05-01 69 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

相关问题