在Windows 7 64位上将16位DLL加载到32位进程中

时间:2013-02-20 22:52:07

标签: windows-7 windows-7-x64 32-bit 16-bit

我编写了一个32位应用程序,它启动了一个16位可执行文件,它可以加载一些16位DLL来执行某些应用程序的功能。它在Windows 7 32位上运行良好,但在Windows 7 64位上运行不正常,因为该版本的操作系统不包含NTVDM。

代码的16位部分非常广泛,并且移植到32位会非常昂贵。此外,它还使用了一些不再营业的公司的第三方16位API;因此,必须完全重新创建该代码,从而增加成本。

有没有办法直接从32位应用程序加载现有的16位DLL,完全删除16位可执行文件?

我已经研究过thunking,但它似乎也不支持Windows 7。

2 个答案:

答案 0 :(得分:1)

没有。这在Windows中是不可能的。

答案 1 :(得分:1)

您必须使用模拟器或虚拟机。

或者,如果那不是一个选项,那么你可以自己编写一个原始模拟器,逐个指令读取机器码并相应地修改伪寄存器和内存,当程序向外调用时那么你将不得不产生回应。

相关问题