无忧启动论坛

标题: 小内存机子启动PE时在LOGON停死的初步分析。 [打印本页]

作者: lxl1638    时间: 2006-12-19 02:35
标题: 小内存机子启动PE时在LOGON停死的初步分析。
小内存机子启动WinPE时常在LOGON期间停死,初步发现是因为内存不足。但处理得好,目前基于1111版的很多修改版都能很好启动。要使LOGON顺利完成,关键是尽早取得内存数分析是否要创建页文件。以往一直用AUTOSETPAGEFILE.EXE,但AUTOSETPAGEFILE.EXE有二个小BUG,本人所做的工具,最了解了,特别是在一些小内存的机子容易出现,而小内存的机子恰恰是启动过程中最需要创建页文件的。它是通过多层调用SETPAGEFILE.EXE来工作的,所以有时会出现无法创建页文件,导致后面启动的进程没有内存执行,因而Logon无法继续。

        若在RunOnceEx或RunOnce处加入AUTOSETPAGEFILE.EXE,此时系统的可用内存还是较足的,但因为多层调用,到SETPAGEFILE.EXE内存已很少了,这过程为:

XPEInit ==> [XPESET]  ==> AUTOSETPAGEFILE.EXE ==> SETPAGEFILE.EXE

而 AUTOSETPAGEFILE.EXE 调用 SETPAGEFILE.EXE的机制设计得不合理(当初本人没考虑那么复杂), AUTOSETPAGEFILE.EXE没等 SETPAGEFILE.EXE完成就返回给XPEInit 或XPESET,从而使XPEINIT启动注册表中的下一进程,这样内存更少了,已启动的SETPAGEFILE.EXE无法工作,XPEINIT启动的进程无法运行。小内存的机子不能启动往往就停在这里(Logon处停死)。

      若在启动组(此时explorer.exe已启动)加入AUTOSETPAGEFILE.EXE或桌面出现以后再试图执行SETPAGEFILE.EXE,小内存的机子可用内存已很少了,有时连SETPAGEFILE.EXE都不能启动,它启动不了,其它的事别谈,因为连页文件都无法创建。

     因此,要使小内存的机子顺利启动,最好是在XPEINIT初始化之前设置虚拟内存,最直接的方法是由XPEINIT读配置文件根据机子的内存大小来设置,即在Logon期间尽早设置好虚拟内存,一旦有了虚拟内存,后续的Logon就顺了。

     重编译XPEINIT的大师可否加上这个功能:在XPEINIT初始化之前分析系统的内存状态况,并设置合理的虚拟内存?

[ 本帖最后由 lxl1638 于 2006-12-19 04:27 AM 编辑 ]
作者: sztopms1    时间: 2006-12-19 07:20
第一次坐老大楼下,顶!
向老大学习,为wuyou作贡献!
谢谢老大长期无私的奉献!
作者: 世界第一等    时间: 2006-12-19 08:00
学习中
作者: zts59    时间: 2006-12-19 08:09
谢谢,支持,嗯,非常不错,如果真是这样的话,FBWF有时蓝屏问题,会不会就是这个原因,
我在256MB的真机上出现这个问题。但不是经常
作者: zhfzl2006    时间: 2006-12-19 08:34
支持!!!
作者: nn2nn    时间: 2006-12-19 08:45
提示: 作者被禁止或删除 内容自动屏蔽
作者: zhaohj    时间: 2006-12-19 09:37
Qinjg8008大师又该出马了,我等只有坐享其成了。技术差只能关注中。




欢迎光临 无忧启动论坛 (http://bbs.c3.wuyou.net/) Powered by Discuz! X3.3