2010-12-07 92 views
0

有没有页面到内存中的另一个进程的整个图像?几周后,我们的IT人员将更换所有“核心”网络交换机。这会降低网络。这将在正常工作时间后完成。在此期间,有几位用户仍然会使用我编写的程序。在每个用户的机器上安装我的程序的本地副本将是一场噩梦。该程序通常从网络共享中运行。程序访问网络的唯一时间是程序执行其可执行(图像)代码的时间。我如何让Windows内存管理器将整个映像加载到内存中并在那里保持“锁定”状态,直到网络重新联机为止?锁定可共享内存

回答

1

这是行不通的。

Windows并不一定会将可执行文件的“静态”副本加载到内存中,它可以随意将大块和页面部分混合进入内存。通常它在程序开始运行后从可执行文件加载资源(图像,字符串等)。它也经常动态加载外部库。

编辑补充:

有没有这样的事情为“一个进程的整个形象。”例如,每个线程都有自己的分配。

也许你应该解释为什么从不同位置(即二进制文件的本地副本)运行不适合你。

+0

我意识到这一点。我想将图像锁定到内存中。有一个VirtualLock函数可以做到这一点。但它只是调用过程,我还需要弄清楚图像每个部分的基地址和长度。 – Mike 2010-12-07 21:00:20

+0

如果程序不需要访问服务器上启动时的某些文件,则可以将程序复制到本地磁盘。对不起,我没有提到。我希望编写一个小程序来调用一些系统API来将EXE的代码和数据段“锁定”到内存中。 – Mike 2010-12-07 21:31:12

1

您可以编写它以便将其本身复制到临时目录,然后让它将该副本作为单独的进程运行,然后自行终止(第一个副本)。我之前完成了这个小小的杂耍行为,但这取决于你的程序是如何工作的,不管它是否喜欢从临时目录运行。