繁体   English   中英

Windows DLL 加载:将64位Dll加载到32位进程中,是否可能?

[英]Windows DLL Loading : Load A 64 Bit Dll Into a 32 bit Process, Is It Possible?

大多数人会说windows上32bit下64bit是不可能的。 但是据我所知,Wow64 通过加载 64 位 ntdll,然后加载 32 位 ntdll 来工作。 调用 64 位 dll 发出系统调用。 在此处输入图像描述

如 Wow64SystemServiceCall 所示,它跳转至 _Wow64Transition。

因此,理论上是否可以加载 64 位 dll,并在两层之间进行某种类似的转换调用?

只是在这里问这在理论上是否可行,或者我是否在浪费时间。 先感谢您!

是和不是。 您不能将 64 位库“加载”到 32 位进程中。 但是操作系统可以为你运行干扰:它可以将库加载到另一个进程中,并提供一个 IPC 接口来使用它。

我在 1995 年从事过这样的项目。当时的 Visual Basic 是 16 位的,Windows NT 3.51 是 32 位的。 我们从 32 位操作系统 VAX VMS 移植了计算引擎,并用 VB 重新创建了 GUI。 为了移动数据,Windows 提供了一个“thunking 层”。 VB调用了一个OS function,传递了一个function的名字和参数说明。 NT代表VB调用了32位的function,返回VB地址空间中的数据。 工作起来很有魅力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM