Aaron Stebner's WebLog

Thoughts about setup and deployment issues, WiX, XNA, the .NET Framework and Visual Studio

Hibernate once, resume many (HORM) in a nutshell

Hibernate once, resume many (HORM) in a nutshell

  • Comments 32

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.


  • I am trying to enable HORM in my system. In the Target Designer, Advanced Configuration and Power Interface PC, Power Management, I checked the Enable Hibernation. But after I checked dependency , built image, deployed the image, there wasn't a hiberfil.sys in the driver C:. What's the problem?

    If I type c:> xpepm -hibernate, the system returns ERROR 1141: The system BIOS failed an attempt to change the system power state.

    Thanks very much
  • This comment is for Sam.

    Sounds like your machine doesn't support hibernate. Either through a bios setting or it may be an APM bios, not ACPI. The error you received when running xpepm indicates that the BIOS rejected the request, not the OS.

    HORM is a pretty popular subject so I'll ask the team to write up some more blog posts on the subject including troubleshooting tips at the Embedded blog (see link above). In the meantime, i highly recommend posting followup questions on this to the XP Embedded public newsgroup for a more immediate response, there are many people in the community available there to assist as well.
  • Is it possible to use HORM on older version of XPE? (Like SP1)

    Best regards,
  • Hi Gil - I have not tried to backport HORM to XPE SP1. I suppose it would be theoretically possible if you got all of the right binaries and placed them into your XPE SP1 image, but this type of solution would not be supported by our team or Product Support. Are there any specific issues that prevent you from using XPE SP2? Perhaps I could help you resolve those? Let me know....
  • I am also trying to enable HORM in my system
    My system has two partition on harddisk.
    C: is windows xp-pro SP2 and D: is xpe sp2.

    After I deployed the target image and fba done
    there wasn't a hiberfil.sys for xpe in the
    driver D:. there was a hiberfill.sys in the
    C: for xp-pro.

    The EWF was work on correctory, but
    d:> xpepm -hibernate, the system returns ERROR 1141: The system BIOS failed an attempt to change the system power state. It was same as
    Mr. Sam.

    In my system on the windows xp-pro SP2,
    hibernate was work correctory. Then I thought
    taht the bios of my system was supporting a

    Is that tight ? and please show me how resolve
    this problem.

    Thanks very much
  • Hi Amro - I am not positive what is causing the error that you are seeing when trying to hibernate your XP Embedded image. I would suggest double-checking that you have included all of the necessary hardware and software components when you built your XPe image. If you have included everything and it still does not work, I would suggest reviewing HORM information available on the Windows Embedded team blog at http://blogs.msdn.com/embedded/ and check the Embedded newsgroups for similar problems and resolutions. If those do not help, the alias wecrt (at) microsoft (dot) com may be able to help as well.

    Hope this helps!
  • Hi, I've the same problem as amro on an VIA Epia M Board. With XP Home and Pro I've no problems with hibernation support on this board.
    I think that the TargetDesigner do not accept the check mark vor hibernation.

    Have anyone a solution or an hint???
  • Thank you everyone, I solve a this problem.

    When I work on the target designer,
    I added a video-driver component that only
    for my board. Video chip is ATI radeon M9.
    Then I can use HORM.
    But I do not know WHY.
  • Is it possible to change the CD-ROM when the Windows XP Embedded has been boot from a bootable CD ?
  • Hi Just4UriM - I believe that once you have booted from a bootable CD-ROM, your system is running from RAM and it is safe to swap out the CD in the drive. Just remember that if you reboot the system that you need to have the bootable CD in the drive to get the OS to reload.

  • Thanks astebner , but the problem is that when the Embedded Windows was boot up , the CD-ROM drive is locked! So how can I change the CD ? is there a way to unlock it ?
  • Hi Just4UriM - I found out that I am wrong about the behavior of the system regarding bootable CD-ROM drives. In this scenario, the OS is using the CD-ROM in place of the hard drive and is not loading the entire image into RAM like I thought it was. Therefore, it locks the CD-ROM drive to prevent accidental removal of the CD.

    One option you might consider is to use 2 CD/DVD drives - an internal CD-ROM to boot from and a more powerful CD/DVD device for runtime use. In this scenario, you could mark the boot device so that it is not visible externally.
  • Error caused during hibernation/standby stating device driver error - Keyboard error etc. Disabling a Hidden service YSKeyboardFilter solved my problem. This seems to be a major problem with many user.
  • Do you get the same error on normal hibernate (not using HORM)?

    Could you file a bug report athttp://msdn.microsoft.com/embedded/community/community/feedback/feedxp/default.aspx, giving more details of the error (error code, hardware and drivers installed) so we can investigate?


  • You know hibernate could be a great basis for a kewl app that saves games, desktop states etc. too bad no developers have figured this out.
Page 1 of 3 (32 items) 123
Leave a Comment
  • Please add 4 and 3 and type the answer here:
  • Post