Hibernate once, resume many (HORM) in a nutshell

I wanted to take a minute to spotlight one of the big new embedded enabling features that is new to Windows XP Embedded SP2. It is called hibernate once, resume many. We have taken to abbreviating this to HORM internally, so if you see this new acronym floating around in documents or newsgroups about XP Embedded that is likely what it means.

HORM provides the ability to resume an EWF-protected system from a hibernation file (hiberfil.sys) each time a machine is restarted instead of performing a full OS boot. This greatly improves the cold-boot startup time of machines. Here are a few key points about HORM:

  • You must protect all partitions on your volume with EWF in order for HORM to work correctly
  • You must use EWF RAM or RAM Reg overlay types in conjunction with HORM
  • Ordinarily, NTLDR will check the header/signature of hiberfil.sys when the system begins the boot process in order to protect against a stale orphaned hiberfil.sys being booted. If a stale hiberfil.sys is detected, NTLDR will show a menu asking if you want to continue to resume or discard the hiberfil.sys and perform a full boot. You can create a file named resmany.dat (any size, any format) on the root of the boot partition (typically c:) to suppress this check and allow your device to resume without any user interaction.
  • You must make sure to use the EWF NTLDR with HORM. EWF NTLDR is the only boot loader that has the logic to search for resmany.dat and skip the hiberfil.sys header check.
  • There are useful help docs describing how to implement HORM on your device, you can check them out here.
  • One thing not covered in the documentation is how to enable HORM directly from Target Designer. You can create an additional file resource that will copy resmany.dat to the root of your image partition or simply add it to the image after you do a build inside of Target Designer. Then, assuming you have enabled hibernation in your power management component and configured EWF to run on startup, you will be able to immediately create your hiberfil.sys after your image finishes running through first-boot agent (FBA).
  • If you are using Winlogon and include the settings in the UI Core component you will be able to hibernate via the start menu. If not, you can include the XPE Power Management tool (xpepm.exe) and run xpepm -hibernate from a cmd prompt to create your hiberfil.sys after you launch the apps that you want to run each time you resume.

I encourage you all to take a look at HORM as you start exploring XPE SP2. Please let us know if you run into any problems or have any questions.