无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5780|回复: 2
打印 上一主题 下一主题

[原创总结]Windows 2000/XP/2003电源管理模式设置指南

[复制链接]
跳转到指定楼层
1#
发表于 2005-3-1 00:19:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Windows 2000/XP/2003操作系统所支持的计算机类型(HAL)及相关内核文件的对应关系
作者:Climbing(xclimbing@msn.com)
版本:2.3
创建日期:2004年12月6日
最后修改日期:2005年1月18日
============
致谢
============
这篇总结文章的写成,主要参考了死性不改网友所发布的用于制做万能克隆的S&R&S系列中的相关批处理文件,在此表示万分感谢!
同时感谢无忧启动论坛的hyne网友(他已经沉默了很长时间了),他是万能克隆技术的先驱者之一,本文章引用了很多他制做的计算机类型选择程序(acpi.exe)中的说明,这里一并表示感谢。
感谢JUJUMAO论坛木鸟网友对本文作出的有益补充!
================
文章正文
================
1) 所谓的计算机类型(设备管理器 -> 计算机)是通常我们所说的计算机的电源类型,也就是Windows系统中的HAL类型。HAL应该是Hardware Abstract Layer的缩写,也就是硬件抽象层的意思,相关知识请参考Windows NT系统的体系结构。
2) 所谓的内核文件有两个,一个是hal*.dll,另一个是NT的内核文件(NT Kernel),这些文件都可以从%windir%\Driver Cache\I386目录下的*.cab文件中解出来,至于是哪个cab文件,当然跟你的系统打上的Service Pack有关系,例如你打了SP4补丁,那么就是sp4.cab文件,如果没有打补丁,那就是driver.cab文件,详细的可以参考下面的批处理程序。
3) 下面所说的死性不改名称是指死性不改网友给对应的文件起的名字,由于具有相当程度的普遍性,在这里一并列出,方便大家使用和参考。
4) 硬件ID,即HardwareID,是指某种计算机类型所对应的ID,这是一一对应的关系,更新某计算机的硬件ID就意味着同时更新计算机类型。后面将提供使用devcon和rundll32两种办法更改硬件ID的方法,但这两种办法必须运行于当前的Windows环境下(而不是第三方的纯DOS环境等)。
其对应关系如下:
计算机类型               HAL文件(死性不改名称)              Kernel文件(死性不改名称)    硬件ID(HardwareID)
Standard                 hal.dll(hal.chk)                   ntoskrnl.exe(sxbg.chk)        E_ISA_UP
ACPI Uniprocessor        halaacpi.dll(acpu.chk)             ntoskrnl.exe(sxbg.chk)        ACPIAPIC_UP
ACPI Multiprocessor      halmacpi.dll(acpm.chk)             ntkrnlmp.exe(ntos.chk)        ACPIAPIC_MP
MPS Uniprocessor         halapic.dll(mpsu.chk)              ntoskrnl.exe(sxbg.chk)        MPS_UP
MPS Multiprocessor       halmps.dll(mpsm.chk)               ntkrnlmp.exe(ntos.chk)        MPS_MP
Compaq SystemPro         halsp.dll(com.chk)                 ntkrnlmp.exe(ntos.chk)        SYSPRO_MP
ACPI                     halacpi.dll(acpi.chk)              ntoskrnl.exe(sxbg.chk)        ACPIPIC_UP
1、上述的七种计算机类型的详细名字顺序对应下面的七个名字(我假设你了解每种计算机类型代表哪一类的计算机)。
A. Standard PC
B. ACPI Uniprocessor PC
C. ACPI Multiprocessor PC
D. MPS Uniprocessor PC
E. MPS Multiprocessor PC
F. Compaq SystemPro Multiprocessor or 100% Compatible
G. Advanced Configuration and Power Interface (ACPI) PC
2、更改计算机类型的方法。
下面提供了四种更改计算机类型的方法,在后两种方法中,推荐使用RunDll32方式。
2.1 通过改名相关文件直接更改计算机类型。
首先大家要明确,上述的所有相关文件都应该是保存在%windir%\system32目录下(这里的%windir%表示Windows的安装目录)。选择某种计算机类型就要将相应的HAL部分的文件改名为hal.dll,而Kernel部分的文件改名为ntoskrnl.exe。以ACPI Multiprocessor为例:将halmacpi.dll复制到%windir%\system32目录下并改名为hal.dll(DOS命令:copy /y halmacpi.dll %windir%\system32\hal.dll),将ntkrnlmp.exe复制到%windir%\system32目录下改名为ntoskrnl.exe(DOS命令:copy /y ntkrnlmp.exe %windir%\system32\ntoskrnl.exe),由于更改的是Windows的内核文件,这种更改方法不能在Windows环境正在运行的情况下进行,但可以在纯DOS环境下或者系统恢复控制台下运行。
2.2 在boot.ini中通过Windows系统的启动参数直接指定计算机类型。
如果你在恢复克隆时选错了计算机类型并且你知道应该使用什么样的计算机类型(或者你不知道该使用什么类型而想多试几种类型),那么你可以直接在Boot.ini中指定要使用的计算机类型对应的Hal及Kernel文件,以ACPI Uniprocessor PC类型计算机为例:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional(ACPI Uniprocessor)" /hal=halaacpi.dll /kernel=ntoskrnl.exe
对应死性不改网友的文件命名法,你可以这样写boot.ini的启动项:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP Professional(ACPI Uniprocessor)" /hal=acpu.chk /kernel=sxbg.chk
2.3 使用rundll32命令更改计算机类型。这种改法的前提是你能够进入Windows系统,例如你选择成了Standard PC,虽然能够进入系统,但计算机类型却不对的情况。
请将下面的代码保存为ChangeHalByRundll.cmd,用法请参考批处理中的说明。另外,批处理中使用的reg.exe是命令行方式操作注册表的程序,在Windows XP/2003系统中内置了该程序,而Windows 2000中却没有,你可以将XP/2003下的reg.exe复制到2000中使用。
  1. @echo off
  2. :: =========================================================================================================
  3. :: ChangeHalByRundll.cmd  使用Windows的rundll32命令来更改计算机类型的批处理
  4. :: 用法: ChangeHalByRundll <硬件ID>
  5. ::   <硬件ID>是指你想更改成的计算机类型所对应的HardwareID。
  6. :: 例如:你想将计算机改成ACPI Uniprocessor类型,那么使用命令:ChangeHalByRundll ACPIPIC_UP
  7. :: 计算机类型与硬件ID的对应关系如下:
  8. :: 计算机类型            硬件ID(HardwareID)
  9. :: Standard              E_ISA_UP
  10. :: ACPI Uniprocessor     ACPIAPIC_UP
  11. :: ACPI Multiprocessor   ACPIAPIC_MP
  12. :: MPS Uniprocessor      MPS_UP
  13. :: MPS Multiprocessor    MPS_MP
  14. :: Compaq SystemPro      SYSPRO_MP
  15. :: ACPI                  ACPIPIC_UP
  16. :: =========================================================================================================
  17. if %1&#35;==&#35; goto _usage
  18. set HardIDs=E_ISA_UP ACPIPIC_UP ACPIAPIC_UP ACPIAPIC_MP MPS_UP MPS_MP SGI_MPS_MP SYSPRO_MP
  19. echo %HardIDs% | find /i "%1" > nul
  20. if errorlevel 1 goto _usage
  21. :_update
  22. REG.EXE DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E966-E325-11CE-BFC1-08002BE10318}\0000" /f
  23. REG.EXE DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E966-E325-11CE-BFC1-08002BE10318}\0001" /f
  24. REG.EXE DELETE "HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E966-E325-11CE-BFC1-08002BE10318}\0000" /f
  25. REG.EXE DELETE "HKLM\SYSTEM\ControlSet001\Control\Class\{4D36E966-E325-11CE-BFC1-08002BE10318}\0001" /f
  26. REG.EXE DELETE "HKLM\SYSTEM\CurrentControlSet\Enum\Root\ACPI_HAL" /f
  27. REG.EXE DELETE "HKLM\SYSTEM\CurrentControlSet\Enum\Root\PCI_HAL" /f
  28. rundll32.exe setupapi,InstallHinfSection %1_HAL 131 %windir%\inf\hal.inf
  29. cls
  30. echo.
  31. echo 恭喜,计算机类型更改完毕,请重新启动计算机使更改生效,系统会重新扫描硬件!
  32. echo 按任意键退出...
  33. pause >nul
  34. goto _quit
  35. :_usage
  36. cls
  37. echo.
  38. echo 错误:你没有指定计算机类型对应的硬件ID或者你指定的硬件ID不存在。
  39. echo 用法: %0  ^<硬件ID^>
  40. echo.
  41. echo 计算机类型与硬件ID的对应关系如下:
  42. echo.
  43. echo 计算机类型            硬件ID(HardwareID)
  44. echo Standard              E_ISA_UP
  45. echo ACPI Uniprocessor     ACPIAPIC_UP
  46. echo ACPI Multiprocessor   ACPIAPIC_MP
  47. echo MPS Uniprocessor      MPS_UP
  48. echo MPS Multiprocessor    MPS_MP
  49. echo Compaq SystemPro      SYSPRO_MP
  50. echo ACPI                  ACPIPIC_UP
  51. echo.
  52. echo 按任意键退出...
  53. pause>nul
  54. goto _quit
  55. :_quit
  56. set HardIDs=
复制代码
2.4 使用devcon命令更改计算机类型。这个devcon命令也是由微软公司提供的更改硬件驱动的命令,但并没有随Windows系统提供这个命令,在网上可以找到下载。这种改法的前提也需要你能够进入Windows系统。
请将下面的代码保存为ChangeHalByDevcon.cmd,用法请参考批处理中的说明。
  1. @echo off
  2. :: =========================================================================================================
  3. :: ChangeHalByDevcon.cmd  使用devcon命令来更改计算机类型的批处理
  4. :: 用法: ChangeHalBydevcon <硬件ID>
  5. ::   <硬件ID>是指你想更改成的计算机类型所对应的HardwareID。
  6. :: 例如:你想将计算机改成ACPI Uniprocessor类型,那么使用命令:ChangeHalByRundll ACPIPIC_UP
  7. :: 计算机类型与硬件ID的对应关系如下:
  8. :: 计算机类型            硬件ID(HardwareID)
  9. :: Standard              E_ISA_UP
  10. :: ACPI Uniprocessor     ACPIAPIC_UP
  11. :: ACPI Multiprocessor   ACPIAPIC_MP
  12. :: MPS Uniprocessor      MPS_UP
  13. :: MPS Multiprocessor    MPS_MP
  14. :: Compaq SystemPro      SYSPRO_MP
  15. :: ACPI                  ACPIPIC_UP
  16. :: =========================================================================================================
  17. if %1&#35;==&#35; goto _usage
  18. set HardIDs=E_ISA_UP ACPIPIC_UP ACPIAPIC_UP ACPIAPIC_MP MPS_UP MPS_MP SGI_MPS_MP SYSPRO_MP
  19. set nHardIDs=!E_ISA_UP !ACPIPIC_UP !ACPIAPIC_UP !ACPIAPIC_MP !MPS_UP !MPS_MP !SGI_MPS_MP !SYSPRO_MP
  20. echo %HardIDs% | find /i "%1" > nul
  21. if errorlevel 1 goto _usage
  22. :_update
  23. devcon.exe sethwid @ROOT\PCI_HAL\0000 := %nHardIDs%
  24. devcon.exe sethwid @ROOT\ACPI_HAL\0000 := %nHardIDs%
  25. devcon.exe sethwid @ROOT\PCI_HAL\0000 := +%1
  26. devcon.exe sethwid @ROOT\ACPI_HAL\0000 := +%1
  27. devcon.exe update %windir%\inf\hal.inf %1
  28. cls
  29. echo.
  30. echo 恭喜,计算机类型更改完毕,请重新启动计算机使更改生效,系统会重新扫描硬件!
  31. echo 按任意键退出...
  32. pause >nul
  33. goto _quit
  34. :_usage
  35. cls
  36. echo.
  37. echo 错误:你没有指定计算机类型对应的硬件ID或者你指定的硬件ID不存在。
  38. echo 用法: %0  ^<硬件ID^>
  39. echo.
  40. echo 计算机类型与硬件ID的对应关系如下:
  41. echo.
  42. echo 计算机类型            硬件ID(HardwareID)
  43. echo Standard              E_ISA_UP
  44. echo ACPI Uniprocessor     ACPIAPIC_UP
  45. echo ACPI Multiprocessor   ACPIAPIC_MP
  46. echo MPS Uniprocessor      MPS_UP
  47. echo MPS Multiprocessor    MPS_MP
  48. echo Compaq SystemPro      SYSPRO_MP
  49. echo ACPI                  ACPIPIC_UP
  50. echo.
  51. echo 按任意键退出...
  52. pause>nul
  53. goto _quit
  54. :_quit
  55. set HardIDs=
  56. set nHardIDs=
复制代码
有兴趣继续改进的同志,可以使用Choice命令或者Horst的WBAT命令做一个选择菜单让用户选择计算机类型,然后结合上面的批处理实现更人性化的更改计算机类型的批处理程序!另外,对Hyne的acpi选择程序做一些简单修改,也可以实现Windows下图形界面的计算机类型选择。
3、从系统驱动cab文件中提取HAL相关文件的方法。
下面是死性不改网友从系统驱动文件中解压出上述相关各文件并使用死性不改命名法命名的批处理程序(这个批处理是从死性不改的S&R&S系列中的regset.cmd中rip出来的,原则上适用于目前的所有Windows 2000/xp/2003系统,在原来的批处理基础上我做了适当的修改,主要是增加了提取sxbg.chk的内容):
  1. @echo off
  2. set sys=%systemroot%\system32
  3. set bg=%systemroot%\Driver~1\I386
  4. set chk=ntoskrnl.exe ntkrnlmp.exe ntkrpamp.exe hal.dll halacpi.dll halaacpi.dll halmacpi.dll halsp.dll halapic.dll halmps.dll
  5. for %%i in (sp4 sp3 sp2 sp1 driver) do if exist %bg%\%%i.cab set fcab=%%i.cab&& goto expandf
  6. :EXPANDF
  7. if "%fcab%"=="" echo 系统的%windir%\Driver Cache\I386目录下没有对应的cab压缩包,这是本批处理运行所必需的文件 && goto check
  8. for %%i in (%chk%) do expand %bg%\%fcab% -F:%%i %systemroot%\ >nul
  9. if exist %systemroot%\halsp.dll move %systemroot%\halsp.dll %sys%\com.chk >nul
  10. move %systemroot%\ntoskrnl.exe %sys%\sxbg.chk >nul
  11. move %systemroot%\ntkrpamp.exe %sys%\ntkr.chk >nul
  12. move %systemroot%\ntkrnlmp.exe %sys%\ntos.chk >nul
  13. move %systemroot%\hal.dll %sys%\hal.chk >nul
  14. move %systemroot%\halacpi.dll %sys%\acpi.chk >nul
  15. move %systemroot%\halaacpi.dll %sys%\acpu.chk >nul
  16. move %systemroot%\halmacpi.dll %sys%\acpm.chk >nul
  17. move %systemroot%\halapic.dll %sys%\mpsu.chk >nul
  18. move %systemroot%\halmps.dll %sys%\mpsm.chk >nul
  19. goto _quit
  20. :check
  21. pause
  22. goto _quit
  23. :_quit
复制代码
4、选择参考:(根据技术要求和网友的测试,仅供参考)
★Standard PC:适用所有主板,但对于新的主板可能造成不能关机。
★ACPI:主板芯片高于BX440低于或等于INTEL 815/SIS 735/NFORCE1/ALI/VIA KT400
       /VIA P4X266等,一般2003年以前的机子都支持这种模式。
★ACPI Uniprocessor PC:SIS 748/大部分INTEL 845系列/VIA KT600/nVIDIA nFORCE2
       或更新的产品,一般2003年以后的机子使用这种模式。
★ACPI Multiprocessor PC:主板支持HT并且安装了支持HT功能CPU的主板/安装了
       双CPU的早期入门级双CPU主板/入门级服务器及一小部分部门级服务器,例
       如INTEL 845GE L 845PE、865PE以上并使用P4 X.X HT CPU
5、=====================名词解释:========================
APM为Advanced Power Management(高级电源管理,此模式下ACPI未打开)
APIC为Advanced Programmable Interrupt Controller(高级可编程中断控制器,P4和Athlon XP的主板都支持此功能,可将15个IRQ中断扩展为23个,此模式下ACPI打开)
MPS为Multi Processor System(多处理器系统,此模式下ACPI未打开)

6、对各种计算机类型的解释
=================
Standard PC
=================
Standard PC通用于任何标准PC、非ACPI、或非MPS,可以用于386、486、PentiumII 350以下或其他类型的机器;所有PC系统均支持,但支持ACPI并打开了ACPI的新主板使用这个可能导致不能软关机!
============================================================
Advanced Configuration and Power Interface (ACPI) PC
============================================================
一般用于2003年前买的电脑,Win2000-2003 均支持ACPI,用于带有单处理器的支持ACPI系统的单处理器主板,处于ACPI模式下的单处理器电脑,主板不提供APIC功能。如果选择这个启动发现左上角光标一直闪不能进入系统请在bios中打开ACPI。主板芯片高于BX440低于或等于INTEL 815/SIS 735/NFORCE1/ALI/VIA KT400/VIA P4X266等,一般2003年以前的机子都支持这种模式。
==============================
ACPI Uniprocessor PC
==============================
一般用于2003年以后购买的中高端电脑,Win2000-2003 均支持这种电源模式。用于安装了一个处理器的ACPI多处理器主板,处于ACPI模式下的双处理器电脑(主板不支持双处理器),或处于ACPI模式下的单处理器电脑,主板提供APIC功能,如SIS 748/大部分INTEL 845系列/VIA KT600/nVIDIA nFORCE2或更新的产品,一般2003年以后的机子使用这种模式。

==============================
ACPI Multiprocessor PC
==============================
一般用于2003年以后买的电脑,Win2000-2003 均支持这种电源模式。用于安装了多个处理器的ACPI多处理器主板,处于ACPI模式下的双处理器电脑(主板支持双处理器),如主板支持HT(超线程)并且安装了支持HT功能CPU的主板/安装了双CPU的早期入门级双CPU主板/入门级服务器及一小部分部门级服务器,如INTEL 845GE L 845PE、865PE以上并使用P4 HT CPU,2004年以后这种机子比较普遍了。
==============================
MPS Uniprocessor PC
==============================
APM模式下的双处理器电脑(主板支持双处理器),或APM模式下的单处理器电脑,主板提供APIC功能,Win2000 WinXP Win2003 均支持。请核对主板或电脑说明书,慎重选择。
==============================
MPS Multiprocessor PC
==============================
APM模式下的双处理器电脑(主板支持双处理器)。
Win2000 WinXP Win2003 均支持。请核对主板或电脑说明书,慎重选择。

注意:以下两种计算机类型是针对不同于x86体系结构的计算机设计的,因此,在制做万能克隆时可以不必考虑这两种计算机类型,据猜测,这两种类型与Standard PC都不兼容。
这个推测来源于JUJUMAO论坛的木鸟网友。
============================================================
Compaq SystemPro Multiprocessor or 100% Compatible
============================================================
猜测这个应该是Alpha机器专用HAL,很少见了,呵呵,不知道该怎么写说明了。
Win2000 WinXP支持,不适用于Win2003。

============================================================
Silicon Graphics Visual Workstation
============================================================
SGI图形工作站专用HAL,很少见了,只有Win2000支持。

注:上述4、5、6的内容摘自hyne网友的计算机类型选择程序的说明文件中,感谢hyne网友!

7、JUJUMAO论坛木鸟网友对本文中概念不清晰的地方做出了详细具体的补充说明,帖子链接如下:
http://www.jujumao.com/dispbbs.a ... ID=26385&page=1
主要内容:
我来补充一点。
操作系统最后识别出来的的HAL类型,需要主板芯片组、主板BIOS、CPU同时都支持,其中有一个不能支持,就将会被识别成其它类型,或者识别出来不能进入系统,导致启动蓝屏。
两种特殊类型的HAL
Compaq SystemPro Multiprocessor or 100% Compatible
我猜测这个应该是alpha机器专用HAL
Silicon Graphics Visual Workstation
SGI图形工作站专用HAL
这两种系统在做万能GHOST的时候可以不考虑。因为这个很可能连Standard PC都不兼容。
剩下的6种HAL的区别,主要就在系统是否支持ACPI(高级电源管理接口)和APIC(高级可编程中断控制器)上。
其实,他上面提到的一些芯片组对应的类型,只能作为参考,因为很重要的一点就是不同bios支持的不同,就会导致,最终识别出来的类型不同。
找不到我以前写的了,自己再写一次吧,Climbing所写的都是以前的总结经验,但是这个不能作为判断的标准。比如,P3机器也有ACPI Multiprocessor PC和ACPI Uniprocessor PC,比如支持双处理器的主板,及一些工作站的主板等。P4的机器,也可能是Advanced Configuration and Power Interface (ACPI) PC和Standard PC,原因可能是早期BIOS不完善,BIOS设置被关闭。
==============================
ACPI Multiprocessor PC
==============================
当计算机识别出来是此类型,说明你的系统是多处理器或者支持HT(超线程)处理器,并且主板和主板的BIOS支持并打开APIC和ACPI
ACPI Multiprocessor PC=APIC+ACPI+多处理器(包括支持HT处理器)
==============================
ACPI Uniprocessor PC
==============================
这是当前最为常见的类型,主板和主板的BIOS支持并打开APIC和ACPI,系统是单处理器。
ACPI Uniprocessor PC=APIC+ACPI+单处理器(不包括支持HT处理器)
============================================================
Advanced Configuration and Power Interface (ACPI) PC
============================================================
这是以前比较常见的类型,系统只提供了对ACPI的支持。主板和主板的BIOS支持并打开ACPI。并且没有打开APIC,或者主板不支持APIC
==============================
MPS Multiprocessor PC
==============================
服务器上比较常见,这个是不支持ACPI的,对应ACPI Multiprocessor PC
MPS Multiprocessor PC=APIC+多处理器(包括支持HT处理器)
==============================
MPS Uniprocessor PC
==============================
我猜测,这个在以前的工作站上比较多,同上面一样不支持ACPI,对应ACPI Uniprocessor PC
MPS Uniprocessor PC=APIC+单处理器(不包括支持HT处理器)
=================
Standard PC
=================
呵呵,古老的电脑都是这个类型的,既不支持ACPI,也不支持APIC。注意,很多P3主板由于BIOS默认没有打开ACPI功能,也会识别成Standard PC,导致点击关闭计算机后,系统提示你手动关闭计算机电源。

上面提到了两个单词,就是ACPI和APIC,下面就解释一下这两个的含义。
    ACPI就是Advanced Configuration and Power Interface的缩写,意思是“高级配置与电源接口”。这是英特尔、微软和东芝共同开发的一种电源管理标准。
    ACPI可实现以下功能:   
    1、用户可以使外设在指定时间开关;   
    2、使用笔记本电脑的用户可以指定计算机在低电压的情况下进入低功耗状态,以保证重要的应用程序运行;   
    3、操作系统可以在应用程序对时间要求不高的情况下降低时钟频率;
    4、操作系统可以根据外设和主板的具体需求为它分配能源;
    5、在无人使用计算机时可以使计算机进入休眠状态,但保证一些通信设备打开;
    6、即插即用设备在插入时能够由ACPI来控制。
    不过,ACPI和其他的电源管理方式一样,要想享受到上面这些功能,必须要有软件和硬件的支持。在软件方面,Windows 98及其后续产品和Windows 2000都对ACPI给予了全面的支持;硬件方面比较麻烦,除了要求主板、显卡和网卡等外设要支持ACPI外,还需要机箱电源的配合。电源在提供5伏电压给主板的同时,还必须使电流稳定在720毫安以上才可以,这样它才能够实现电脑的“睡眠”和“唤醒”。
    ACPI共有六种状态,分别是S0到S5,它们代表的含义分别是:
    S0--实际上这就是我们平常的工作状态,所有设备全开,功耗一般会超过80W;
    S1--也称为POS(Power on Suspend),这时除了通过CPU时钟控制器将CPU关闭之外,其他的部件仍然正常工作,这时的功耗一般在30W以下;(其实有些CPU降温软件就是利用这种工作原理)
    S2--这时CPU处于停止运作状态,总线时钟也被关闭,但其余的设备仍然运转;
    S3--这就是我们熟悉的STR(Suspend to RAM),这时的功耗不超过10W;
    S4--也称为STD(Suspend to Disk),这时系统主电源关闭,但是硬盘仍然带电并可以被唤醒;
    S5--这种状态是最干脆的,就是连电源在内的所有设备全部关闭,功耗为0。
    我们最常用到的是S3状态,即Suspend to RAM(挂起到内存)状态,简称STR。顾名思义,STR就是把系统进入STR前的工作状态数据都存放到内存中去。在STR状态下,电源仍然继续为内存等最必要的设备供电,以确保数据不丢失,而其他设备均处于关闭状态,系统的耗电量极低。一旦我们按下Power按钮(主机电源开关),系统就被唤醒,马上从内存中读取数据并恢复到STR之前的工作状态。内存的读写速度极快,因此我们感到进入和离开STR状态所花费的时间不过是几秒钟而已;而S4状态,即STD(挂起到硬盘)与STR的原理是完全一样的,只不过数据是保存在硬盘中。由于硬盘的读写速度比内存要慢得多,因此用起来也就没有STR那么快了。STD的优点是只通过软件就能实现,比如Windows 2000就能在不支持STR的硬件上实现STD。
怎样才能使用ACPI的电源管理模式呢?简单地说是要求软硬件都可以完全支持ACPI功能。
Windows98是最常用的理想平台,如果还没有安装Win98,在安装时输入Setup/PJ。如果已经安装了Win98,可以到Win98"系统"中的"设备管理器"然后再找到"系统设备"里的"高级电源管理"这一项,双击它选择"升级驱动程序",显示所有设备,选择ACPI,再按提示安装驱动程序,重新启动计算机就可以在Windows98使用ACPI了。
如果在使用中遇到问题,可以试着升级版本最新的Acpi.sys文件。
注意,FAT32格式的硬盘无法实现硬盘的挂起功能(STD),而FAT16格式是可以的。
此外,硬件对ACPI的支持是必需的。机箱电源提供5伏电压给主板的同时,必须使电流稳定在720毫安以上,才能够使电脑在短时间里从"睡眠"状态醒来。同时,像显卡等外设也必须完全支持ACPI和STR。
通过选择电源方案可以实现电源管理,电源方案就是计算机管理电源使用情况的一组设置。Windows98提供了下列三种预置的电源管理方案(见下表),用户也可以自己设置计算机进入等待状态或关闭硬盘和监视器所需的等待时间。


2、ACPI与APM比较
APM 1.0&1.1:由BIOS执行电源管理;
APM 1.2:操作系统定义电源管理时间,由BIOS负责执行;
ACPI:BIOS收集硬件信息,定义电源管理方案;由操作系统负责执行。
APM是一种软件解决方案,因此是与操作系统有关的, 而ACPI是工业标准,包括了软件和硬件方面的规范。
3、一些常见问题
1)如何判断系统处于S1还是S3模式?
答:在ACPI的S1休眠模式下,只有CPU停止工作,其他设备仍处于加电状态。在ACPI的S3模式(BIOS->电源管理->Suspend to RAM设为Enable,除内存外其他设备均处于断电状态。因此,判断系统是处于S1模式还是在S3模式最简单的办法是,仔细观察系统的情况:在S3状态,所有设备均停止工作,即使按光驱上的弹出钮也不能打开光驱门。在S1状态,光驱门是可以打开的。另外,S3模式下,系统完全是安静的,所有风扇也停了。此时系统不能从键盘唤醒。手工唤醒的方法只能是按前面板上的电源按钮。
2)以 Setup /PJ 命令重装Win98系统后,如何取消ACPI模式?
答:Win98程序的帮助中并没有提供"PJ"参数。这是一个隐藏的参数。之所以将其隐藏,是因为Win98的STR功能并不成熟,甚至可以说还存在许多问题。Win98也没有提供卸载ACPI的功能。可以试着在主板BIOS中关闭STR功能,看能否解决问题。
3)为实现STR功能,为什么关机后不能切断电源?
答:STR功能是在关机时,将系统的运行信息保存在内存中,下一次开机时,直接读取内存中的信息,并恢复到关机前的状态。它的优点是启动速度特别快,而且可以保留工作状态。其缺点就是,即使在关机后,也不能断开电脑电源。因为内存中的数据一旦切断电源就会丢失。
4)在关闭Win2000时,会显示"现在可以安全关机"、而不自动关闭ATX电源,怎么办?
答:可用试试下面的办法:选择"设置/控制面板/电源选项/高级电源管理",如果机器支持高级电源管理,则选中"启用高级电源管理支持",然后在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon中置PowerdownAfterShutdown为1;如果机器不支持高级电源管理,则很不幸,只能在关闭系统时,显示"现在可以安全关机?"时手动切断电源了。
5)不小心把"关闭Windows"对话框中的第一项"让电脑进入睡眠状态"给弄丢了,请问该如何恢复?
答:一般来讲,这类问题只要重装主板驱动程序,重新启动以后都应该能够解决问题,也可以将"控制面板/系统/设备管理器"中的"高级电源管理支持"删掉,然后重新启动机器,按照Win98系统的提示重新进行安装也可以解决问题。
APIC (高级可编程中断控制器)对计算机来讲有两个作用,一是管理IRQ的分配,可以把传统的16个IRQ扩展到24个(传统的管理方式叫PIC),以适应更多的设备。二是管理多CPU。由于Nf2主板并不支持多CPU,所以,APIC关闭直接的影响是减少了可用的IRQ。不过,如果板卡不是非常多的话,关闭APIC对系统是没有什么影响的。
要实现SMP功能,我们使用的CPU必须具备以下要求:
CPU内部必须内置APIC单元。Intel 多处理规范的核心就是高级可编程中断控制器(Advanced Programmable Interrupt Controllers--APICs)的使用。CPU通过彼此发送中断来完成它们之间的通信。通过给中断附加动作(actions),不同的CPU可以在某种程度上彼此进行控制。每个CPU有自己的APIC(成为那个CPU的本地APIC),并且还有一个I/O APIC来处理由I/O设备引起的中断,这个I/O APIC是安装在主板上的,但每个CPU上的APIC则不可或缺,否则将无法处理多CPU之间的中断协调。
APIC可能遇到的问题,很多这类问题可以通过BIOS更新来解决。
下面的是通过更改HAL类型来解决
  CPU实际运行频率与BIOS设定频率不符
  NF2的用户大约有10%的会出现CPU实际运行频率与BIOS设定频率不符的问题。我们称之为“频率不对”。
  这种现象带来的直接后果就是在测试3dmark或跑3D游戏的时候,会感觉不流畅,也称之为“顿”。
  一般在更改BIOS设置后、更新驱动后重启时,用测试软件如Aida32、MBM5等可以看到CPU的运行频率和你在BIOS里设置得不一样,而且差距很大。这个时候,用super pi测试CPU速度,会比平常花费时间长好几秒,用3dmark跑测试,会比平常低几百分甚至上千分。在3dmark中看到的CPU频率,也与BIOS设定不符合。
  如果出现这种情况,则属于我们所讨论的“频率不对”的问题。
  不过,不是所有的3D游戏“顿”都是这个原因。判断的方法是:如果你只有个别游戏“顿”,或者用上述软件测试频率正确,就不是此问题。
  如果判断确实属此问题,解决的方法也很简单,经过网友讨论,只要关闭APIC功能即可。(注意,是APIC,不是ACPI)。


  然后,依次选“更新驱动程序”-“从列表或指定的位置安装”-“不要搜索,我要自己选择要安装的驱动程序”,然后从弹出的列表里选“Advanced Configuration and Power Interface(ACPI) PC”。确定更换,重启成功后,再到Bios里关闭APIC即可。

通过这个例子可以说明,硬件HAL类型是可以在BIOS和操作系统中更改的,更改后如果是全新安装系统,或者使用死性不改封装程序的制作GHOST系统。识别出来的计算机类型是可以改变的。
也就是说,我们完全可以通过更改BIOS设置来更改是别的HAL类型。BIOS里电源管理选项下的ACPI设置可以控制是否打开计算机的ACPI支持。APIC可以控制计算机是否打开APIC,提供对多处理器,HT的支持。以此解决一些由于BIOS不完善造成的不兼容现象。

本文件原文及相关程序下载链接:
Climbing总结的“Windows 2000/XP/2003操作系统所支持的计算机类型(HAL)及相关内核文件的对应关系”文章原文(RAR格式,点击下载)

***************************
修改历史
***************************
2.3 [2005.01.18]
* 修正ChangeHalByRundll.cmd和ChangeHalByDevcon.cmd两个批处理文件中find语句的语法错误,将find /i %1 中的%1修改为"%1"。
2.2 [2004.12.11]
+ 增加JUJUMAO论坛木鸟网友补充的内容(更专业更详细)
2.1 [2004.12.10]
+ 增加对HAL即硬件抽象层的解释
* 修正文章引用内容中的错误字及逻辑不严密的地方
2.0 [2004.12.07]
+ 增加HAL与HardwareID的对应关系
+ 增加通过RunDLL32程序和devcon程序更改计算机类型的批处理
+ 添加上木鸟网友的有关补充说明
1.0 [2004.12.06]
本文初稿,一些简单的总结
本帖相关文件下载
2#
 楼主| 发表于 2005-3-1 00:22:41 | 只看该作者

[原创总结]Windows 2000/XP/2003电源管理模式设置指南

这篇文章写出来很久了,最早贴在JUJUMAO论坛,看来没有很多人看到。
而贴在这里是因为看到这样一篇放空炮的帖子,如下:
[推荐]ACPI电源软关机整理 -ghost万能克隆
回复

使用道具 举报

3#
发表于 2005-3-1 18:48:45 | 只看该作者

[原创总结]Windows 2000/XP/2003电源管理模式设置指南

有点看不懂,但是是好文章。值得收藏,谢谢发贴!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-10-19 22:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表