HAL Exports Added For Version 5.0

This page lists the five exports that were added to the Windows HAL for version 5.0, i.e., for Windows 2000. They are exported only from the x86 builds. All are still exported as of version 10.0, but starting with version 6.2 they are exported only as forwards to the kernel (which is where all versions of 64-bit Windows export them from).

Documentation status is summarised by colour coding so that more detail can be given as Remarks with less text. Functions that appear to be completely undocumented are highlighted yellow. If a function is documented now but is known not to have been documented in the first contemporaneous Device Driver Kit (DDK), WDK or Installable File System (IFS) Kit, then it is shaded yellow to retain some of its previous status as undocumented. If a function is documented as reserved or obsolete, with or without a prototype, it is shaded red or shaded grey, respectively. An undocumented function that is at least declared in one or another header file from the Windows Driver Kit (WDK) is shaded orange. If the only declaration that Microsoft is known to have disclosed publicly is from the “minwin” directory of the Enterprise WDK for Windows 10 version 1511, specifically, then the function is highlighted orange.

Name Remarks
KeAcquireQueuedSpinLock x86 only;
forwarded to kernel in 6.2 and higher;
from undocumented to reserved in 2001-2006;
declaration since 2006 requires Windows XP and higher
x64 support as kernel export
KeAcquireQueuedSpinLockRaiseToSynch x86 only;
forwarded to kernel in 6.2 and higher
x64 support as kernel export
KeReleaseQueuedSpinLock x86 only;
forwarded to kernel in 6.2 and higher;
from undocumented to reserved in 2001-2006;
declaration since 2006 requires Windows XP and higher
x64 support as kernel export
KeTryToAcquireQueuedSpinLock x86 only;
forwarded to kernel in 6.2 and higher;
from undocumented to reserved in 2001-2006;
declaration since 2006 requires Windows XP and higher
x64 support as kernel export
KeTryToAcquireQueuedSpinLockRaiseToSynch x86 only;
forwarded to kernel in 6.2 and higher
x64 support as kernel export

The first documentation known to this study is for the IFS Kit as included with the WDK for Windows Vista. Each has its own page just to say that the function is reserved. With no IFS Kit for Windows XP being available for inspection, I cannot discount that these functions were first documented, perhaps even substantially, or were at least declared as early as 2001. This would at least be consistent with the version constraints on the declarations.

The queued spin locks that these functions work with are an array of KSPIN_LOCK_QUEUE structures in the KPRCB, indexed by a KSPIN_LOCK_QUEUE_NUMBER. Each is dedicated to a very particular purpose. Generalisation of queued spin locks came in version 5.1—with documentation.