Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2
APM on desktop computers
In general, APM should be avoided on desktop computers because third-party video cards or other add-in cards might cause problems. There are some computers on which the APM BIOS causes instability all by itself. Both APM support (Ntapm.sys) in the Windows 2000 operating system and the APM BIOS itself should be turned off on such computers. Other computers, though, may be more reliable under Windows 2000 with APM support turned on, for example, those that have an APM BIOS that cannot be disabled.
- APM should not be run on any computer that could be made unstable by it, because an unstable APM BIOS might cause loss of data.
Key components of APM
APM BIOS: Placed in ROM or flash by the OEM. Does most of the work of powering things on and off, but is invisible to the operating system. The APM BIOS must be turned on for APM to work. If it is unstable, it might be necessary to turn the APM BIOS off in a hardware configuration screen, in addition to turning off Windows 2000 APM support. Timeouts in the APM BIOS should be off, or set as long as possible, so that the operating system rather than the APM BIOS can time things out. The APM BIOS is replaced by ACPI.
NtLdr: Does a restart of APM on resume from hibernate, if APM was active before the hibernate.
Ntapm.sys: The device driver that hooks the system and the APM BIOS together. Some system operations end up here for dispatch to the APM BIOS. APM BIOS events and status are polled from here. Note that when the APM BIOS presents an event (for example to suspend or power off) Ntapm.sys catches this, and then does an NtInitiatePowerAction call, which tells the operating system to perform an operation. At the very end, the power manager calls into the Hardware Abstraction Layer (HAL) which calls back into Ntapm.sys which, in turn, calls the APM BIOS. So, almost all the power code in the operating system and driver stacks is the same between APM and ACPI.
Apmbatt.sys: Simulates a battery unit so the system battery status code can work.
Power Options control panel program: Allows the user to enable or disable APM support on his or her computer. This is the preferred way (and the only supported way) to turn operating system APM support on or off.
Biosinfo.inf: Lists computers on the auto-enable list and the disable list, and the BIOS detection sequences used to match them.
If the computer is a desktop computer, it is unlikely that it will run APM well. But you can get most of the value of APM by using hibernate, which requires neither APM nor ACPI to work.
If the computer is a laptop or a desktop that must run APM, make sure the user has APM turned on, hibernate turned on, and the battery icon turned on.
Make sure that the APM BIOS screen blanking is off. This will often make the system seem to behave badly when all that is wrong is that the screen is black. (Use a screen saver of BLANK to get the right effect.)
Run Apmstat.exe. Its output will often reveal a common problem, such as trying to run APM on an multi-processor computer, for example.
If Windows 2000 APM has been turned off, and the computer is still unstable, try turning off the APM BIOS itself in the computer's setup screen. Some computers work better with Windows 2000 APM turned on, since this puts them more in sync with their APM BIOSs.
While troubleshooting, keep in mind the following considerations:
Virtually all APM computers have some sort of computer setup/configuration screen, usually invoked at boot by pressing ESC, DEL, F1, F2, or F10. If you can get access to these screens, you can often improve system behavior by changing or disabling APM options.
Some APM BIOSs turn themselves off if you disable all their timers; in this case, it is best to set them all to some long timeout value.
Some APM BIOSs refuse to suspend if the kernel debugger is active on one of their COM ports.
Event Log If an APM_SETPOWER call fails (that is, a standby/suspend fails at the APM BIOS interface), Ntapm.sys writes a record into the system event log, and produces data that reports what happened in addition to the error code the APM BIOS returned. This information is sometimes helpful in determining if the computer refused to suspend due to activity (that the user is not aware of) on a port.