Monday, August 20, 2012

Deleting the hal.dll file in Windows XP can delete the ACPI Advanced Power Management (APM) functions of your computer

I recently had a customer with a virus infection that resulted in a missing hal.dll file error message when Windows XP Home started.  I booted Windows from the installation CD and went into the recovery console.  I copied the Hal.dll file from the CD to the Windows System 32 directory, as detailed here: http://pcsupport.about.com/od/fixtheproblem/ht/restorehaldll.htm

After I replaced the file, it still wouldn't boot, and I discovered that the boot.ini file had been corrupted/deleted.  As a result I re-entered the recovery console from the Windows XP CD and rebuilt the boot.ini file, as detailed here: http://support.microsoft.com/kb/330184

The computer booted up just fine and we continued to remove the virus files and fix other errors on the computer.

The customer called back to say that when he told the computer to shut down, he was now getting a message that "It is Now Safe to Turn Off Your Computer" and looked like this:



I returned to his house and discovered that as a result of replacing the hal.dll file, the computers Advanced Power Management features were missing, and instead of showing an ACPI PC in Device Manager, it showed a Standard PC:



When I went into Power Options in Control Panel, several ACPI-related options such as Sleep, Hibernate, and the Power Button options were missing.  All the guides I read said that if that happened, you had to completely reinstall Windows XP.

Before I went ahead with that, I discovered some instructions on another blog that detailed how to edit the Registry and then perform a hardware upgrade of the "Standard PC" to an ACPI-compatible PC.  I performed the steps and it fixed the ACPI-related problems.  Here are the steps (which should only be performed if you are SURE your PC is ACPI-compatible):


  1. Regedit. Browse to:
    HKLM\System\CurrentControlSet\Enum\Root\PCI_HAL000
  2. Right click the 0000 key and choose “Permissions…”.
  3. Check the “Full Control” checkbox for “Everyone”. This allows you to edit this next value…
  4. Open the “HardwareID” value and change it from “e_isa_up” to “acpipic_up” (followed by one line break, the cursor should be on the line directly under “acpipic_up”).
  5. Open Device Manager, open the “Computer” key, right-click “Standard PC”, and select “Update Driver”.
  6. You’ll pick from a list, don’t search, answer accordingly.
  7. Select the ACPI entry, which will now be shown in the Compatible Hardware list (joy!), thanks to the reg-tweak.
  8. Once again, if you actually CONTINUE with this, and your system is NOT originally an ACPI system, it very well may make it unbootable.
  9. Select “Next” and let the new HAL install.
  10. Reboot, and you’re done! Enjoy your ability to select the multi-processor HAL once again if you were curiously poking around. Since hal.inf locks you into only “compatible” HALs, you can now update again and select Multi-Processor PC if your system supports it, then you’ll have multi-cores again.
                  These original instructions are located here: http://falconfour.wordpress.com/2011/03/19/how-to-switch-windows-xp-hal-_back_-from-standard-pc-to-acpi-the-clean-way/, and I thank the poster for helping me avoid a complete Windows XP reinstall.

                  1 comment:

                  1. thank you! i have a winxp vm and i got this error and so i knew how to reset it and i got ACPI working again! greetings from cabo san lucas :D

                    ReplyDelete