HAL Exports Added For Version 3.50

The table below lists the 17 exports that had been added to the HAL by version 3.50 from Windows NT 3.5 Service Pack 3. For the purpose of this study, with no other build of version 3.50 available for inspection, these exports are taken to have been added for version 3.50. Be aware that they might not date from the original release of version 3.50 or that they might have originated for a service-pack release of version 3.10.

Roughly half these added exports are documented in the Windows Driver Kit (WDK) for Windows Vista, dated January 2007. Most of these are highlighted red or highlighted pink in the table, as indications that they are documented only to mark them as reserved or obsolete, respectively.

For no functions does the WDK documentation list (or even hint about) the applicable versions. All the documented functions and four undocumented functions are declared in one or another of the WDK header files. Where this is true of an undocumented function, it is shaded yellow in the table. Header files in the WDK apply version constraints (in terms of the NTDDI_VERSION macro) to most declarations. However, this is a recent practice. When Microsoft started adding this information, it seems no trouble was taken to determine any function’s origin from before Windows 2000. Yet instead of leaving the old declarations without version constraints, trouble was taken to add version information in the full knowledge that the addition would be factually incorrect for the overwhelming majority of these old functions. In this way, nearly all these functions that were added for Windows NT 3.50 are said to require at least Windows 2000.

Functions that the WDK neither documents nor declares are highlighted yellow, as being completely undocumented.

Function Remarks
ExAcquireFastMutex x86 only;
forwarded to kernel function ExiAcquireFastMutex in 5.2 from Windows Server 2003 SP1 to 6.1;
forwarded to kernel function ExAcquireFastMutex in 6.2 and higher;
redefined by macro in terms of ExiAcquireFastMutex;
supported for x64 as kernel export in 5.2 from Windows Server 2003 SP1, and higher
ExReleaseFastMutex x86 only;
forwarded to kernel function ExiReleaseFastMutex in 5.2 from Windows Server 2003 SP1 to 6.1;
forwarded to kernel function ExReleaseFastMutex in 6.2 and higher;
redefined by macro in terms of ExiReleaseFastMutex;
supported for x64 as kernel export in 5.2 from Windows Server 2003 SP1, and higher
ExTryToAcquireFastMutex x86 only;
forwarded to kernel function ExiTryToAcquireFastMutex in 5.2 from Windows Server 2003 SP1 to 6.1;
forwarded to kernel function ExTryToAcquireFastMutex in 6.2 and higher;
redefined by macro in terms of ExiTryToAcquireFastMutex;
supported for x64 as kernel export in 5.2 from Windows Server 2003 SP1, and higher
HalAdjustResourceList  
HalAllProcessorsStarted  
HalAllocateCrashDumpRegisters  
HalAssignSlotResources not declared if NO_LEGACY_DRIVERS defined
HalClearSoftwareInterrupt  
HalGetBusDataByOffset  
HalProcessorIdle  
HalSetBusData not declared if NO_LEGACY_DRIVERS defined
HalSetBusDataByOffset  
HalSetTimeIncrement discontinued in 6.3
KfAcquireSpinLock x86 only;
forwarded to kernel function KfAcquireSpinLock in 6.2 and higher
KfLowerIrql x86 only
KfRaiseIrql x86 only;
supported for x64 as kernel export in 5.2 from Windows Server 2003 SP1, and higher
KfReleaseSpinLock x86 only;
forwarded to kernel function KfReleaseSpinLock in 6.2 and higher