Kernel Exports Added for Windows Server 2003 SP1

The table below lists the 50 functions that are first exported by the Windows kernel in the version 5.2 from Windows Server 2003 SP1. Two more are listed as additions for Windows XP SP3 because the latter has the lower version number. All these added functions are still exported as of version 10.0, except that one was discontinued in 6.3. These additions represent by far the largest expansion of the kernel’s exported functionality for any service-pack release in the history of Windows. Indeed, more functions were added for Windows Server 2003 SP1 than for the original Windows Server 2003. An explanation is that this is the first Windows version (known to this study) that has an x64 build. Many of the new functions are exported only from x64 builds.

Documentation status is summarised by colour coding so that more detail can be given as Remarks with less text. Functions that have their own non-trivial documentation are shown with no background colour. If the 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. 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.

Barely a quarter of the new functions are documented. For only a few does the documentation state the applicable versions as beginning with Windows Server 2003 SP1 specifically. Unusually, one function that is documented is not declared in any WDK header file. Another half of the functions are not documented but do at least get declared in one or another WDK header file. Declarations, both of these and the documented functions, are mostly for Windows Server 2003 SP1 and higher, but some have no version constraint at all, and one dates the function to Windows XP.

Function Remarks
ExAcquireFastMutex x64 only;
supported for x86 as export from HAL version 3.51 and higher
ExAcquireRundownProtectionCacheAware  
ExAcquireRundownProtectionCacheAwareEx  
ExAllocateCacheAwareRundownProtection  
ExEnterCriticalRegionAndAcquireFastMutexUnsafe  
ExEnterCriticalRegionAndAcquireResourceExclusive  
ExEnterCriticalRegionAndAcquireResourceShared  
ExEnterCriticalRegionAndAcquireSharedWaitForExclusive  
ExFreeCacheAwareRundownProtection  
ExInitializeRundownProtectionCacheAware  
ExQueryDepthSList x64 only;
conditionally defined inline;
supported (and long documented) for x86 by macro definition
ExReInitializeRundownProtectionCacheAware  
ExReleaseFastMutex x64 only;
supported for x86 as export from HAL version 3.51 and higher
ExReleaseFastMutexUnsafeAndLeaveCriticalRegion  
ExReleaseResourceAndLeaveCriticalRegion  
ExReleaseRundownProtectionCacheAware  
ExReleaseRundownProtectionCacheAwareEx  
ExRundownCompletedCacheAware  
ExSizeOfRundownProtectionCacheAware  
ExTryToAcquireFastMutex x64 only;
supported for x86 as export from HAL version 3.51 and higher
ExWaitForRundownProtectionReleaseCacheAware  
ExfReleasePushLockExclusive  
ExfReleasePushLockShared  
ExfTryToWakePushLock  
ExiAcquireFastMutex x86 only
ExiReleaseFastMutex x86 only
ExiTryToAcquireFastMutex x86 only
ExpInterlockedFlushSList x64 only
ExpInterlockedPopEntrySList x64 only
ExpInterlockedPushEntrySList x64 only
InitializeSListHead x64 only;
defined inline for x86;
also exported from KERNEL32 version 5.1 and higher;
documentation is in SDK for KERNEL32, and requires Windows XP and higher
IoIs32bitProcess x64 only;
documented before available, at least as early as 2002
IoTranslateBusAddress  
IoWMIDeviceObjectToProviderId x64 only;
documented before available, at least as early as 2000;
supported for x86 by macro
KdChangeOption  
KdSystemDebugControl  
KeAcquireGuardedMutex documentation requires Windows Server 2003 and higher
KeAcquireGuardedMutexUnsafe documentation requires Windows Server 2003 and higher
KeAcquireInStackQueuedSpinLock x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.1 and higher
KeAcquireInStackQueuedSpinLockRaiseToSynch x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.1 and higher
KeAcquireQueuedSpinLock x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.0 and higher
KeAcquireQueuedSpinLockRaiseToSynch x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.0 and higher
KeAcquireSpinLockRaiseToDpc x64 only;
declaration requires Windows 2000 and higher
KeAcquireSpinLockRaiseToSynch x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 4.0 and higher
KeAreAllApcsDisabled documentation requires Windows Server 2003 and higher
KeEnterGuardedRegion documentation requires Windows Server 2003 and higher
KeExpandKernelStackAndCallout x64-only in 5.2;
undocumented until 2005-2006
KeGetCurrentIrql x64 only;
defined inline to read cr8;
supported for x86 as export from HAL version 3.51 and higher
KeInitializeCrashDumpHeader not declared
KeInitializeGuardedMutex documentation requires Windows Server 2003 and higher
KeIsWaitListEmpty  
KeLastBranchMSR (data) x64 only
KeLeaveGuardedRegion documentation requires Windows Server 2003 and higher
KeLowerIrql x64 only;
defined inline to write cr8;
supported for x86 as export from HAL version 3.51 and higher
KeQueryMultiThreadProcessorSet x64 only
KeQueryPrcbAddress x64 only
KeRaiseIrqlToDpcLevel x64 only;
supported for x86 as export from HAL version 4.0 and higher
KeReleaseGuardedMutex documentation requires Windows Server 2003 and higher
KeReleaseGuardedMutexUnsafe documentation requires Windows Server 2003 and higher
KeReleaseInStackQueuedSpinLock x64 only;
supported for x86 as export from HAL version 5.1 and higher
KeReleaseQueuedSpinLock x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.0 and higher
KeReleaseSpinLock x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 3.51 and higher
KeTryToAcquireGuardedMutex documentation requires Windows Server 2003 and higher
KeTryToAcquireQueuedSpinLock x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.0 and higher
KeTryToAcquireQueuedSpinLockRaiseToSynch x64 only;
also x86 in 6.2 and higher;
supported for x86 as export from HAL version 5.0 and higher
KeTryToAcquireSpinLockAtDpcLevel documented before available, as early as 2002
KfRaiseIrql x64 only;
redefined as inline function to read and write cr8;
supported for x86 as export from HAL version 3.51 and higher
KiCpuId x64 only;
also x86 in 6.2;
discontinued in 6.3
MmAllocatePagesForMdlEx undocumented until 2005-2006
PsGetCurrentProcessWin32Process  
PsGetCurrentProcessWow64Process x64 only
PsGetCurrentThreadProcess  
PsGetCurrentThreadProcessId  
PsGetCurrentThreadTeb  
PsGetCurrentThreadWin32Thread  
PsGetCurrentThreadWin32ThreadAndEnterCriticalRegion  
PsGetProcessWow64Process x64 only
PsIsSystemProcess  
PsWrapApcWow64Thread  
RtlCopyMemory x64 only;
redefined by macro using memcpy (x86 also)
RtlCopyMemoryNonTemporal x64 only;
redefined by macro as RtlCopyMemory (x86 only)
RtlLookupFunctionEntry x64 only;
also exported as export from contemporaneous KERNEL32 versions;
documentation and declaration are in SDK for KERNEL32
RtlPcToFileHeader x64 only;
x86 also in 10.0 and higher;
also exported as export from contemporaneous KERNEL32 versions;
documentation and declaration are in SDK for KERNEL32
RtlRestoreContext x64 only;
also exported as export from contemporaneous KERNEL32 versions;
documentation and declaration are in SDK for KERNEL32
RtlUnwindEx x64 only;
also exported as export from contemporaneous KERNEL32 versions;
documentation and declaration are in SDK for KERNEL32
RtlVirtualUnwind x64 only;
also exported as export from contemporaneous KERNEL32 versions;
documentation and declaration are in SDK for KERNEL32
SeReportSecurityEvent  
SeSetAuditParameter  
ZwSecureConnectPort  
__C_specific_handler x64 only
__chkstk x64 only
__misaligned_access x64 only
_local_unwind x64 only
_setjmp x64 only
_setjmpex x64 only
longjmp x64 only
memcmp x64 only;
also x86 in 6.2 and higher