HAL Exports Added For Version 5.1

This page lists the three exports that were added to the Windows HAL for version 5.1, i.e., for Windows XP. The two that are documented are remarkable in several respects. First, they are the first HAL exports for which the contemporaneous documentation lists the applicable versions. That they are stated correctly ought not to be remarkable. Second, when version constraints were applied to declarations in the WDK for Windows Vista, these functions became the oldest for which such constraints are correct (additions for Windows 2000 having been declared as requiring at least Windows XP and additions for earlier versions having been declared as requiring at least Windows 2000). Again, the correctness ought not to be remarkable.

At the time, of course, queued spin locks were some sort of new best thing in kernel-mode programming. Documentation of functions for plain old spin locks was revised to advise that “Drivers for Windows XP and later should use the more efficient and reliable queued spin locks”. Microsoft doesn’t actually call them new, but plainly saw some interest in documenting the newness correctly. For a clue that they were not entirely new, wonder why these functions are not named more directly as KeAcquireQueuedSpinLock, etc., and look back to the HAL exports that were added for version 5.0.

Name Remarks
KeAcquireInStackQueuedSpinLock x86 only;
forwarded to kernel in 6.2 and higher
x64 support as kernel export
KeAcquireInStackQueuedSpinLockRaiseToSynch x86 only;
forwarded to kernel in 6.2 and higher
x64 support as kernel export
KeReleaseInStackQueuedSpinLock x86 only;
forwarded to kernel in 6.2 and higher
x64 support as kernel export