Geoff Chappell, Software Analyst
Each new name for a Windows package brings at least a change of the minor version number until contemporaneous client and server packages are reunited for version 6.0.
File Version | Distribution |
---|---|
3.51 | Windows NT 3.51 |
4.0 | Windows NT 4.0 |
5.0 | Windows 2000 |
5.1 | Windows XP |
5.2 | Windows Server 2003 |
6.0 | Windows Vista Windows Server 2008 |
6.1 | Windows 7 Windows Server 2008 R2 |
6.2 | Windows 8 |
6.3 | Windows 8.1 |
10.0 | Windows 10 |
After version 6.0, each HAL in each server edition is the same as in a corresponding client edition. Though Windows Vista, Windows 7, Windows 8 and Windows 8.1 were each in their time promoted as a significant—even major—release, they all have the same major version number which anyway isn’t in any of the names. As if to acknowledge this as unsatisfactory, the major version number for Windows 10 actually is 10.
Each 32-bit Windows package is distributed with a selection of HALs which are each specialised for particular hardware. These HALs have different names as files on the distribution media. Early versions of Windows come with very many HALs, and some service packs add HALs that were not in the original releases of the same Windows version. The trend, however, is that the selection gets thinner as Windows matures. Windows Vista and Windows 7 settle on two HALs. Windows 8 leaves just the one.
Versions before Windows Vista install only one of their many HALs. Whichever is chosen, the installed copy is named HAL.DLL. This standard name is hard-coded into the loader. Unless an alternative is specified by a /HAL switch in BOOT.INI, the HAL that is loaded is whatever file is named HAL.DLL.
Windows Vista and higher install one HAL as HAL.DLL, as with earlier versions, but also install their one or two HALs under their own names. These names are hard-coded into the loader, along with the standard name HAL.DLL. In Windows Vista specifically, a detecthal option in the Boot Configuration Data (BCD) may direct the loader to select from the two. In Windows Vista and higher, a hal option can specify any file to load as the HAL, but ordinarily the HAL that is loaded is whatever file is named HAL.DLL.
The following table attempts to sketch the history of the different HALs by showing the file name, a descriptive string from within the file, and the Windows releases that are known to have included the file. The descriptive string is from a variable that Microsoft’s symbol files name as HalName.
File Name | HAL Name | Distribution |
---|---|---|
hal.dll | PC Compatible Eisa/Isa HAL | Windows NT 3.51 Windows NT 4.0 Windows 2000 except SP1 Windows XP Windows Server 2003 |
hal.dll.softex | PC Compatible Eisa/Isa HAL | Windows NT 4.0 SP4, SP5 and SP6 |
hal486c.dll | PC Compatible Eisa/Isa HAL (486 C Stepping) | Windows NT 3.51 Windows NT 4.0 Windows 2000 SP3 and SP4 |
hal98apc.dll | NEC PC-9800 APIC HAL | Windows 2000 SP3 and SP4 |
hal98mp.dll | NEC PC-9800 MPS HAL | Windows 2000 SP3 and SP4 |
hal98tmr.dll | PC-9800 System Clock 10MHz (support 2nd Timer) | Windows 2000 SP3 and SP4 |
hal98up.dll | PC-9800 System Clock 10MHz | Windows 2000 SP3 and SP4 |
halaacpi.dll | ACPI 1.0 - APIC platform UP | Windows 2000 Windows XP Windows Server 2003 |
halacpi.dll | ACPI Compatible Eisa/Isa HAL | Windows 2000 and higher; until discontinued in Windows 8 |
halapic.dll | UP MPS 1.1 - APIC platform | Windows NT 3.51 |
UP MPS 1.4 - APIC platform | Windows NT 4.0 Windows 2000 except SP1 Windows XP Windows Server 2003 |
|
halast.dll | AST Manhattan MP HAL | Windows NT 3.51 Windows NT 4.0 |
halborg.dll | SGI HAL | Windows 2000 |
halcbus.dll | Corollary C-bus Architecture MP HAL Version 3.2.0 | Windows NT 3.51 |
Corollary C-bus Architecture MP HAL Version 3.4.0 | Windows NT 4.0 | |
halcbusm.dll | Corollary C-bus Architecture MP HAL Version 3.2.0 | Windows NT 3.51 SP5 |
Corollary C-bus MicroChannel Architecture MP HAL Version 3.4.0 | Windows NT 4.0 | |
halmacpi.dll | ACPI 1.0 - APIC platform MP | Windows 2000 except SP1 Windows XP Windows Server 2003 |
ACPI x86 platform | Windows Vista and higher | |
halmca.dll | PC Compatible MicroChannel HAL | Windows NT 3.51 Windows NT 4.0 |
halmps.dll | MPS 1.1 - APIC platform | Windows NT 3.51 |
MPS 1.4 - APIC platform | Windows NT 4.0 Windows 2000 except SP1 Windows XP Windows Server 2003 |
|
halmps.dll.softex | MPS 1.4 - APIC platform | Windows NT 4.0 SP4, SP5 and SP6 |
halmpsm.dll | MPS 1.4 MCA - APIC platform | Windows NT 4.0 |
halncr.dll | NCR 3x series MP HAL | Windows NT 4.0 except SP3 |
haloli.dll | Olivetti LSX5030 MP HAL | Windows NT 3.51 Windows NT 4.0 |
halsp.dll | SystemPro or compatible MP HAL | Windows NT 3.51 Windows NT 4.0 Windows 2000 except SP1 Windows XP |
halws3.dll | Sequent WinServer (TM) 3500 HAL | Windows NT 3.51 SP5 |
halwyse7.dll | Wyse7000i MP HAL | Windows NT 3.51 Windows NT 4.0 |
From the Release Notes for Windows NT 4.0 SP4, it seems that the files named HAL.DLL.SOFTEX and HALMPS.DLL.SOFTEX are intended to replace HAL.DLL and HALMPS.DLL on systems that have various “Softex Incorporated and Phoenix Technologies utilities”. The version resources in both files list “Softex, Inc” as the manufacturer and copyright holder.
HALBORG.DLL is another HAL that is unusual in naming its manufacturer as someone other than Microsoft. Its version resources list the manufacturer as SGI and assert copyright for Silicon Graphics, Inc.
The following 32-bit (x86) builds have been inspected for these notes. Most are from MSDN discs. Some, especially since Microsoft greatly reduced its shipment of operating systems on MSDN discs, are from service packs downloaded (typically as self-extracting executables) from a Microsoft website.
Builds are arranged in increasing order of the file version as recorded in the executable’s resources. This version number is readily visible using Windows Explorer either in a so-called infotip for the file or by accessing the Version tab in the Properties dialog for the file. Programmers know this version number as coming from the so-called root block of the version-information resource, specifically from the dwFileVersionMS and dwFileVersionLS members of a VS_FIXEDFILEINFO structure.
The date stamp shown for each version is more obscure. File dates are easily modified after the executable is built and are anyway liable to be shown differently when read from different time zones. However, there is in each executable’s header a date stamp which is set when the executable is built and which is not commonly changed afterwards. It is readily accessible to anyone with programming knowledge and appropriate tools, e.g., Microsoft’s own DUMPBIN utility.
File Version | File Name | File Header Date Stamp | File Size | Package |
---|---|---|---|---|
3.51.1025.1 | hal.dll hal486c.dll halapic.dll halast.dll halcbus.dll halmca.dll halmps.dll haloli.dll halsp.dll halwyse7.dll |
2FB24F4A (12th May 1995) 2FB24F4A 2FB24F68 2FB24F52 2FB24F55 2FB24F4C 2FB24F6A 2FB24F5E 2FB24F5C 2FB24F64 |
48,416 47,376 63,616 46,416 79,776 45,488 65,696 40,048 52,320 40,848 |
Windows NT 3.51 |
3.51.1029.1 | halncr.dll | 2FB24F73 (12th May 1995) | 79,392 | |
3.51.1057.6 | hal.dll hal486c.dll halast.dll halcbus.dll halmca.dll haloli.dll halsp.dll halws3.dll halwyse7.dll |
32110707 (14th August 1996) 32110707 3211070F 32110717 3211070F 3211071E 3211071E 32110725 32110726 |
49,296 48,256 46,512 80,448 78,592 40,256 53,168 49,648 40,944 |
Windows NT 3.51 SP5 |
halapic.dll halmps.dll |
321B9B3F (22nd August 1996) 321B9B3F |
64,416 46,368 |
||
4.0.1372.1 | hal.dll hal486c.dll halast.dll halcbus.dll halcbusm.dll halmca.dll haloli.dll halsp.dll halwyse7.dll |
31EE6C52 (19th July 1996) 31EE6C52 31EE6C55 31EE6C58 31EE6C58 31EE6C55 31EE6C5B 31EE6C5B 31EE6C5E |
51,424 47,840 45,888 81,728 79,872 45,952 39,904 56,064 40,512 |
Windows NT 4.0 |
4.0.1374.1 | halncr.dll | 31F05382 (20th July 1996) | 78,304 | |
4.0.1378.1 | halapic.dll halmps.dll halmpsm.dll |
31F578CB (24th July 1996) 31F578CB 31F578CD |
65,664 67,776 66,752 |
|
4.0.1381.4 | hal.dll hal486c.dll halapic.dll halast.dll halcbus.dll halcbusm.dll halmca.dll halmps.dll halmpsm.dll haloli.dll halsp.dll halwyse7.dll |
33247F88 (11th March 1997) 33247F8D 33247FB1 33247F94 33247F98 33247F9D 33247F91 33247FB6 33247FBA 33247FA5 33247FA1 33247FAC |
51,744 48,160 66,240 45,920 81,952 80,096 46,208 68,288 67,328 39,968 56,352 40,512 |
Windows NT 4.0 SP3 |
hal.dll.softex halmps.dll.softex |
35E5D874 (28th August 1998) 35E5D875 |
76,160 92,960 |
Windows NT 4.0 SP4, SP5 and SP6 | |
4.0.1381.86 | halncr.dll | 35D34E39 (14th August 1998) | 79,040 | Windows NT 4.0 SP4 |
4.0.1381.98 | hal.dll hal486c.dll halapic.dll halast.dll halcbus.dll halcbusm.dll halmca.dll halmps.dll halmpsm.dll haloli.dll halsp.dll halwyse7.dll |
35E72341 (29th August 1998) 35E72346 35E72377 35E7234D 35E72350 35E72354 35E72349 35E72379 35E7237F 35E72366 35E7235E 35E72371 |
52,384 48,768 66,880 46,112 82,624 80,672 46,848 68,960 68,000 40,224 59,960 40,736 |
Windows NT 4.0 SP4 and SP5 |
4.0.1381.133 | halncr.dll | 36379189 (29th October 1998) | 79,424 | Windows NT 4.0 SP5 |
4.0.1381.164 | hal.dll hal486c.dll halapic.dll halast.dll halcbus.dll halcbusm.dll halmca.dll halmps.dll halmpsm.dll halncr.dll haloli.dll halsp.dll halwyse7.dll |
36C49893 (13th February 1999) 36C498C1 36C49A8B 36C49922 36C49954 36C4998E 36C498F8 36C49AC6 36C49AF9 36C49B16 36C499F5 36C499BB 36C49A49 |
52,352 48,736 66,880 46,112 82,624 80,672 46,784 68,960 68,000 79,424 40,224 56,960 40,736 |
Windows NT 4.0 SP6 |
5.0.2168.1 | hal.dll halapic.dll halborg.dll halmps.dll halsp.dll |
381B75AE (31st October 1999) 381B75B4 381B75B0 381B75B5 381B75AD |
95,296 91,936 148,672 93,408 69,024 |
Windows 2000 |
5.0.2171.1 | halaacpi.dll halacpi.dll halmacpi.dll |
381F8C6E (3rd November 1999) 381F8C6E 381F8C6E |
81,184 66,080 82,048 |
|
5.0.2195.1163 | halborg.dll | 38B32C16 (23rd February 2000) | 148,768 | Windows 2000 SP1 |
5.0.2195.1608 | halaacpi.dll halacpi.dll |
3946DBB9 (14th June 2000) 3946DB7A |
81,600 66,528 |
|
5.0.2195.4864 | hal.dll hal486c.dll hal98apc.dll hal98mp.dll hal98up.dll halapic.dll halborg.dll halmps.dll halsp.dll |
3C4DBAD2 (23rd January 2002) 3C4DBADA 3C4DBFA3 3C4DBAF8 3C4DBAF2 3C4DBAE1 3C4DBAD2 3C4DBAE1 3C4DBADA |
95,456 63,968 106,496 107,904 110,080 92,192 148,960 93,632 69,088 |
Windows 2000 SP3 |
5.0.2195.4884 | hal98tmr.dll | 3C574F8E (30th January 2002) | 110,048 | |
5.0.2195.5201 | halaacpi.dll halacpi.dll halmacpi.dll |
3C989E09 (21st March 2002) 3C989E09 3C989E1E |
82,112 66,848 82,976 |
|
5.0.2195.6655 | hal.dll hal486c.dll hal98apc.dll hal98mp.dll hal98tmr.dll hal98up.dll halborg.dll halsp.dll |
3E25B985 (16th January 2003) 3E25B985 3E25B99F 3E25B9A1 3E25B99A 3E25B99C 3E25B981 3E25B989 |
95,456 63,968 106,496 107,904 110,016 110,080 148,960 69,088 |
Windows 2000 SP4 |
5.0.2195.6691 | halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll |
3E7A7338 (21st March 2003) 3E7A7338 3E7A731B 3E7A733A 3E7A731B |
82,176 66,848 92,224 83,040 93,696 |
|
5.1.2600.0 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll |
3B7D8321 (18th August 2001) 3B7D830F 3B7D830B 3B7D8316 3B7D8314 3B7D831B |
102,528 128,768 78,464 147,456 131,200 149,504 |
Windows XP |
halsp.dll | 3B7D831D (18th August 2001) | 76,416 | Windows XP and SP1 | |
5.1.2600.1106 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll |
3D6DD5B1 (29th August 2002) 3D6DD5AE 3D6DD5AE 3D6DD5AE 3D6DD5AE 3D6DD5B1 |
101,376 127,872 77,440 146,560 129,920 148,352 |
Windows XP SP1 |
5.1.2600.2180 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll halsp.dll |
41107B36 (4th August 2004) 41107B29 41107B28 41107B2E 41107B2D 41107B34 41107B36 |
105,472 131,968 81,280 150,656 134,400 152,704 77,696 |
Windows XP SP2 |
5.1.2600.5512 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll halsp.dll |
48025183 (14th April 2008) 4802517F 4802517F 4802517F 4802517F 48025183 48025183 |
105,344 131,840 81,152 150,528 134,400 152,576 77,696 |
Windows XP SP3 |
5.2.3790.0 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll |
3E800035 (25th March 2003) 3E80002C 3E80002B 3E800030 3E800030 3E800035 |
103,936 108,544 78,336 116,736 110,592 117,760 |
Windows Server 2003 |
5.2.3790.1830 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll |
42435B3A (25th March 2005) 42435B35 42435B34 42435B34 42435B35 42435B3B |
109,568 116,736 82,944 123,904 118,272 124,928 |
Windows Server 2003 SP1 |
5.2.3790.3959 | hal.dll halaacpi.dll halacpi.dll halapic.dll halmacpi.dll halmps.dll |
45D6972F (17th February 2007) 45D69729 45D69729 45D6972A 45D6972A 45D6972F |
109,658 118,272 82,944 125,440 119,808 126,464 |
Windows Server 2003 SP2 |
6.0.6000.16386 | halacpi.dll halmacpi.dll |
4549AC9B (2nd November 2006) 4549AC9A |
134,760 160,872 |
Windows Vista |
6.0.6001.18000 | halacpi.dll halmacpi.dll |
47918A38 (19th January 2008) 47918A38 |
141,880 177,208 |
Windows Vista SP1, Windows Server 2008 |
6.0.6002.18005 | halacpi.dll halmacpi.dll |
49E018D9 (11th April 2009) 49E018D9 |
140,776 177,128 |
Windows Vista SP2 |
6.1.7600.16385 | halacpi.dll halmacpi.dll |
4A5BBF07 (14th July 2009) 4A5BBF07 |
137,296 194,640 |
Windows 7 |
6.1.7601.17514 | halacpi.dll halmacpi.dll |
4CE788D2 (20th November 2010) 4CE788D2 |
137,088 194,432 |
Windows 7 SP1 |
6.2.9200.16384 | halmacpi.dll | 5010ADD0 (25th July 2012) | 319,216 | Windows 8 |
6.3.9600.16384 | halmacpi.dll | 52158FAC (22nd August 2013) | 337,248 | Windows 8.1 |
6.3.9600.17031 | halmacpi.dll | 530888CC (22nd February 2014) | 337,752 | Windows 8.1 With Update |
10.0.10240.16384 | halmacpi.dll | 559F3A8F (9th July 2015) | 350,560 | Windows 10 |
A self-extracting executable for Windows 2000 SP2 has been inspected for these notes but no HALs were found.
Where two or more Windows packges are listed for a set of files, the files with the same name in each package are the same, byte for byte.
The installation images for Windows Vista and higher each have a HAL that is simply named HAL.DLL but it is not built as HAL.DLL: it is already a copy of HALMACPI.DLL.
All x64 builds of Windows so far have just the one HAL, named HAL.DLL.
Microsoft’s distribution of 64-bit Windows on MSDN discs is even less reliable than is my renewal of subscriptions. I seem never to have received a 64-bit edition of Windows XP, which is therefore not included in this study. Though correspondents tell me that 64-bit Windows Vista was readily available the moment that Windows Vista was released, my experience is instead that an MSDN subscription in 2007 produced no x64 build of the original Windows Vista. The copy inspected of that is from an OEM disc. Though all service-pack builds that have been inspected for this study are available through an MSDN subscription, the copies studied have instead been downloaded as self-extracting executables from Microsoft’s free websites since, for who knows what reason, the MSDN site that I pay for is intolerably slow—not that my tolerance is high, given that Microsoft leaves me to the tedium of burning disks and labelling them and has the nerve to tell me that doing so is environmentally friendly.
File Version | File Header Date Stamp | File Size | Package |
---|---|---|---|
5.2.3790.1830 | 42435DCA (25th March 2005) | 279,552 | Windows Server 2003 SP1 |
5.2.3790.3959 | 45D6929B (17th February 2007) | 279,040 | Windows Server 2003 SP2 |
6.0.6000.20500 | 4588DB26 (20th December 2006) | 269,928 | Windows Vista |
6.0.6001.18000 | 4791ACED (19th January 2008) | 233,528 | Windows Vista SP1, Windows Server 2008 |
6.0.6002.18005 | 49E04118 (11th April 2009) | 233,448 | Windows Vista SP2 |
6.1.7600.16385 | 4A5BDF08 (14th July 2009) | 263,232 | Windows 7, Windows Server 2008 R2 |
6.1.7601.17514 | 4CE7C669 (20th November 2010) | 263,040 | Windows 7 SP1 |
6.2.9200.16384 | 5010ABE8 (25th July 2012) | 395,504 | Windows 8 |
6.3.9600.16384 | 5215F8B9 (22nd August 2013) | 418,144 | Windows 8.1 |
6.3.9600.17031 | 530894F9 (22nd February 2014) | 424,280 | Windows 8.1 With Update |
10.0.10240.16384 | 559F383E (9th July 2015) | 425,824 | Windows 10 |
Where two or more Windows packages are listed for the same build, the HAL.DLL files are the same, byte for byte. This identity is formalised for Windows 7 SP1 and Windows Server 2008 R2 SP1 since Microsoft provides the one self-extracting executable for both product names.