Welcome to Bucaro TecHelp!

Bucaro TecHelp
HTTPS Encryption not required because no account numbers or
personal information is ever requested or accepted by this site

About Bucaro TecHelp About BTH User Agreement User Agreement Privacy Policy Privacy Site Map Site Map Contact Bucaro TecHelp Contact RSS News Feeds News Feeds

Script to Identify Your Systems HAL

The Hardware Abstraction Layer (HAL) is a crucial kernel-mode module in the Windows system that sits between the operating system and the hardware. Several different HALs are included with windows, but only the specific one for the system's hardware is copied to the system's disk at installation time.

Having different HAL's is what makes Windows portable to different hardware platforms but having an incorrect HAL can cause your system to work sluggishly or cause unexplained system lockups. During installation the HAL's original name is recorded in the setup log and then the HAL is copied to the system's disk with the filename hal.dll.

One way to determine which HAL is installed on your system is to open the file \windows\repair\setup.log and search for the line \WINDOWS\system32\hal.dll = . The original name of the HAL will be after the equals sign.

The script shown below will open the file setup.log in Windows Notepad, where you can inspect the entire file contents. Paste these lines into a text file and save it with the extension .vbs, for example view_setuplog.vbs. The double-click on the file name to execute the script.

Set ws = WScript.CreateObject("WScript.Shell")
ws.Run ws.ExpandEnvironmentStrings("%SystemRoot%\notepad.exe %SystemRoot%\repair\setup.log")

The script shown below will open the file setup.log and scan through it for a line containing the text hal.dll =. When it locates the line, it will extract the name of the HAL and open a message box providing information about the HAL. Paste these lines into a text file and save it with the file name view_hal.vbs.

Set ws = WScript.CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile(ws.ExpandEnvironmentStrings("%SystemRoot%\repair\setup.log"),1,True)

Do While f.AtEndOfStream <> True
  data = f.ReadLine
  If InStr(data,"hal.dll =") Then
    Exit Do   
  End If

loc1 = InStrRev(data, "= ")
loc2 = InStrRev(data, ".dll")
hal = Mid(data,loc1 + 3,loc2 - loc1 + 1)

Select Case hal
Case "hal.dll"
  Msgbox "HAL is hal.dll for standard PC"
Case "halacpi.dll"
  Msgbox "HAL is halacpi.dll for ACPI PC"
Case "halapic.dll"
  Msgbox "HAL is halapic.dll for APIC PC"
Case "halaacpi.dll"
  Msgbox "HAL is halaacpi.dll for APIC ACPI PC"
Case "halmps.dll"
  Msgbox "HAL is halmps.dll for Multiprocessor PC"
Case "halmacpi.dll"
  Msgbox "HAL is halmacpi.dll for Multiprocessor ACPI PC"
Case "halsp.dll"
  Msgbox "HAL is halsp.dll for Compaq SystemPro"
Case Else
  Msgbox "HAL is " & hal
End Select

In the message, ACPI means the HAL is designed for systems with the Advanced Configuration and Power Interface (basically plug-and-play). APIC means the HAL is designed for systems with an Advanced Programmable Interrupt Controller, an interrupt controller that can manage interrupts from multiple processors.

RSS Feed RSS Feed

Follow Stephen Bucaro Follow @Stephen Bucaro

Fire HD
[Site User Agreement] [Privacy Policy] [Site map] [Search This Site] [Contact Form]
Copyright©2001-2021 Bucaro TecHelp 13771 N Fountain Hills Blvd Suite 114-248 Fountain Hills, AZ 85268