ACPI/OnNow Support

The OnNow design initiative is a set of design specifications which, when applied to system hardware and software applications, enable a PC to deliver the 'instant on' capabilities consumers have come to expect from TVs, VCRs, stereos and other appliances. This initiative and the recommendations below work to ensure that all elements of the system -- applications, devices, and user interface -- can take advantage of this PC power management technology.

Because applications have the most direct knowledge of the user's activity on a PC, they must participate in system-wide power management decision-making in order to ensure error-free handling of power down and power up scenarios. See http://www.microsoft.com/hwdev/onnow.htm for more information and technical specifications for the OnNow initiative.

Many of the recommendations listed below will become requirements in the next revision of the Designed for Windows Logo program so please review this section closely.

Verification suggestions for these recommendations can be found in the 'Pre-testing & Verification of Compliance' section.

Recommended:
Applications should handle system sleep/wake transitions by listening to WM_POWERBROADCAST messages. When applications receive sleep messages (WM_POWERBROADCAST / PBT_APMSUSPEND), they must:

Recommended:
Games should pause game play and stop playing sound when they receive WM_POWERBROADCAST sleep messages.

Recommended:
Applications should not ask the user any questions while it is processing a WM_POWERBROADCAST sleep or query message.

Exception:
An application may pop up a confirmation dialog only if the UI Allowed bit is set in the message and if putting the machine to sleep will cause user data loss or corruption.

Recommended:
Event handling applications such as phone answering machine applications, fax servers, periodic maintenance or desktop management applications, etc must call the SetTreadExecutionState API before and after handling each event. This allows the operating system keep the machine awake while the event is being handled and to put the machine to sleep immediately after the event has been handled.

Recommended:
Presentation applications must call the SetTreadExecutionState API when switching into and out of slide-show mode. This allows the operating system keep the machine awake and display on while the event is being handled and to put the machine to sleep immediately after the event has been handled.

Recommended:
Applications should reduce background activities such as background pagination, background recalculation, auto-saves, auto-formatting, etc. when the computer is running on batteries. The hard disk and CPU are the highest power devices that applications have a direct impact on. The following can be done to reduce hard disk and CPU usage while on batteries:

Applications can determine when the computer is running on batteries by calling the GetSystemPowerStatus API and listening for the WM_POWERBROADCAST / PBT_APMPOWERSTATUSCHANGED message.

Recommended:
Applications should not take any action when they receive a WM_POWERBROADCAST / PBT_APMRESUMEAUTOMATIC message. OnNow computers may be configured to automatically wake when no user is present. Since no user is present, most programs do not need to take action. If the operating system detects the user, it will send WM_POWERBROADCAST / PBT_APMRESUMESUSPEND.

Recommended:
With the introduction of OnNow applications will be run continuously (without restarting) for a much longer than those applications are typically run today. For this reason, applications should take particular care to ensure they do not have any memory leaks. A memory leak is defined as a memory allocation that grows without bounds. Memory leaks occur when an application opens a system handle and neglects to close it. (A handle can be used to extend the functionality of your application by using features provided by the shell.) Lack of system resources, resulting from memory leaks, will cause a decline in system performance and eventual failure.

For more information on ACPI/OnNow please refer to the following web site: http://www.microsoft.com/hwdev/onnow.htm