HAL Exports Added For Version 6.0

This page lists all the exports that were added to the HAL for version 6.0, i.e., for Windows Vista. One is exported only from the x64 builds (until version 10.0 makes it also an x86 export). Another doesn’t survive even to the first service pack, i.e., Windows Vista SP1 which is also Windows Server 2008. Five do not start until Windows Vista SP1.

Although this version brings by far the largest increase in exported functionality since the HAL’s creation, not even one of the new functions is documented. The one that is shaded orange below is at least declared in a WDK header file—and has been from the beginning. For roughly half, all highlighted orange, Microsoft published declarations—plausibly by mistake and evidently just the once so far—in the 1511 release of the WDK for Windows 10.

Function Remarks
HalBugCheckSystem separate declaration since 2009 for Windows 7 and higher
HalConvertDeviceIdtToIrql declared without version constraint
HalDisableInterrupt declared without version constraint
HalDynamicProcessorStarted discontinued in Windows Vista SP1
HalEnableInterrupt declared without version constraint
HalEnumerateEnvironmentVariablesEx declared without version constraint
HalEnumerateProcessors x64 only;
x86 also in 10.0 and higher
HalGetEnvironmentVariableEx declared without version constraint
HalGetInterruptTargetInformation declared without version constraint
HalGetMessageRoutingInfo declared without version constraint
HalGetProcessorIdByNtNumber begins in Windows Vista SP1;
declared without version constraint
HalGetVectorInput declared without version constraint
HalInitializeBios  
HalInitializeOnResume begins in Windows Vista SP1
HalQueryEnvironmentVariableInfoEx begins in Windows Vista SP1;
declared without version constraint
HalQueryMaximumProcessorCount begins in Windows Vista SP1
HalRegisterDynamicProcessor begins in Windows Vista SP1
HalRegisterErrataCallbacks  
HalSetEnvironmentVariableEx declared without version constraint
HalStartDynamicProcessor  
x86BiosAllocateBuffer  
x86BiosCall  
x86BiosFreeBuffer  
x86BiosReadMemory  
x86BiosWriteMemory  

The one of these functions that has always been declared changed for version 6.1 to take two arguments instead of one. The original prototype, having started without a version constraint, was then left as declared for all versions earlier than Windows 7. Only in 2012 with the WDK for Windows 8 was it constrained to require at least Winodws Vista.