Kernel Exports Added for Version 6.0

The large table on this page lists the 375 exports that were added to the Windows kernel for version 6.0., i.e., for the original Windows Vista. These represent by far the biggest change in the kernel’s exported functionality over the whole history of Windows.

Also listed are 35 additions for Windows Vista SP1 and Windows Server 2008. This is among the largest of changes for a service pack. Curiously, twenty functions from the original do not survive. Windows Vista SP2 was much more typical as a service pack: it contributes one more to the list.

For the table below, documentation status is summarised by colour coding so that more detail can be given as Remarks with less text. (If you read this website with scripts enabled, then hovering the mouse over any coloured text will produce a tooltip that shows why the text is coloured.) Functions that have their own non-trivial documentation are shown with no background colour. If the function is documented as reserved or obsolete, it is shaded red or shaded grey, respectively. Functions that appear to be completely undocumented are highlighted yellow. If a function is documented now but was not documented in the first contemporaneous Device Driver Kit (DDK), Windows Driver Kit (WDK) or Installable File System (IFS) Kit, then it is shaded yellow to retain some of its previous status. Many undocumented functions do at least have C-language declarations in one or another header file from the WDK. These are shaded orange, except for one special case. Some declarations are known only from “minwin” headers that Microsoft published in early editions of the WDK for Windows 10 which seem since to have been withdrawn. These are highlighted orange to indicate that public knowledge even of the declaration is exceptional.

Barely a sixth of these new exports for version 6.0 were documented for the contemporaneous WDK, though many more have got documented since. Most are then said (correctly) to be available starting with Windows Vista, but without even hinting that this availability was not generally disclosed until a later WDK. One function is documented only as being reserved. Not quite half of the new functions, and five exports of data, are undocumented but with declarations in one or another of the WDK header files. Declarations, both of these and the documented functions, are mostly for Windows Vista and higher, but some have no version constraint and a few are declared for much older versions. The other third of the new functions had neither documentation nor declaration for nearly a decade. Then, though possibly only as an oversight, Microsoft published declarations for very many of them!

Function Documentation History
AlpcGetHeaderSize  
AlpcGetMessageAttribute  
AlpcInitializeMessageAttribute  
CcGetFileObjectFromSectionPtrsRef before 6.1 revision, undocumented
CcIsThereDirtyDataEx before 6.1, undocumented
CcSetFileSizesEx  
CcSetParallelFlushFile  
CcTestControl  
CmCallbackGetKeyObjectID  
CmGetBoundTransaction  
CmGetCallbackVersion  
CmRegisterCallbackEx  
CmSetCallbackObjectContext  
DbgSetDebugPrintCallback  
EmClientQueryRuleState before 6.2, declared
EmClientRuleDeregisterNotification before 6.2, declared
EmClientRuleEvaluate before 6.2, declared
EmClientRuleRegisterNotification before 6.2, declared
EmProviderDeregister before 6.2, declared
EmProviderDeregisterEntry before 6.2, declared
EmProviderRegister before 6.2, declared
EmProviderRegisterEntry before 6.2, declared
EmpProviderRegister  

To be clear, for the situation is unusual, the small family of Em functions started as declared but undocumented, and then those declarations disappear (from WDM.H). Their only known public disclosure by Microsoft since Windows 8 is the NTOSP.H from early editions of the WDK for Windows 10.

Function Export History Documentation History
EtwActivityIdControl    
EtwEnableTrace    
EtwEventEnabled    
EtwProviderEnabled    
EtwRegister    
EtwRegisterClassicProvider starts in SP1  
EtwSendTraceBuffer starts in SP1  
EtwUnregister    
EtwWrite    
EtwWriteEndScenario    
EtwWriteStartScenario    
EtwWriteString    
EtwWriteTransfer    
ExAcquireCacheAwarePushLockExclusive    
ExAcquireSpinLockExclusive starts in SP1 before 6.2, undocumented
ExAcquireSpinLockExclusiveAtDpcLevel starts in SP1 before 6.2, undocumented
ExAcquireSpinLockShared starts in SP1 before 6.2, undocumented
ExAcquireSpinLockSharedAtDpcLevel starts in SP1 before 6.2, undocumented
ExAllocateCacheAwarePushLock    
ExDeleteLookasideListEx   before 6.1 revision, declared
ExEnterPriorityRegionAndAcquireResourceExclusive starts in SP1  
ExEnterPriorityRegionAndAcquireResourceShared starts in SP1  
ExFetchLicenseData    
ExFlushLookasideListEx   before 6.1 revision, declared
ExFreeCacheAwarePushLock    
ExGetLicenseTamperState    
ExInitializeLookasideListEx   before 6.1 revision, declared
ExInitializePushLock   before 1809, declared
documented start is 1809
ExReleaseCacheAwarePushLockExclusive    
ExReleaseResourceAndLeavePriorityRegion starts in SP1  
ExReleaseSpinLockExclusive starts in SP1 before 6.2, undocumented
ExReleaseSpinLockExclusiveFromDpcLevel starts in SP1 before 6.2, undocumented
ExReleaseSpinLockShared starts in SP1 before 6.2, undocumented
ExReleaseSpinLockSharedFromDpcLevel starts in SP1 before 6.2, undocumented
ExSetLicenseTamperState    
ExTryConvertSharedSpinLockExclusive starts in SP1 before 6.2, undocumented
ExUpdateLicenseData discontinued in 6.2;
restored in 10.0 and higher
 
ExfTryAcquirePushLockShared    

Somehow I must have missed Microsoft’s documentation of ExInitializePushLock in an online inspection on 13th October 2018. As I find it today, 17th September 2020, it’s not only there but is dated 30th September 2018. Presumably, it was documented concurrently with the 1809 release of Windows 10. Either that or some reason should be found for why Microsoft says that a (simple) function from 2006 needs a kernel from 2018.

Function Documentation History
FirstEntrySList in 5.1 and 5.2, declared

The FindEntrySList function is declared in both WDM.H and NTDDK.H before it is ever exported from the kernel or documented.

Function Export History Documentation History
FsRtlAcknowledgeEcp   before 6.1, declared
FsRtlAddBaseMcbEntryEx   before 2018, declared
FsRtlAllocateExtraCreateParameter   before 6.1, declared
FsRtlAllocateExtraCreateParameterFromLookasideList   before 6.1 revision, declared
FsRtlAllocateExtraCreateParameterList   before 6.1, declared
FsRtlAreVolumeStartupApplicationsComplete   before 6.1, declared
FsRtlCancellableWaitForMultipleObjects    
FsRtlCancellableWaitForSingleObject    
FsRtlChangeBackingFileObject    
FsRtlCheckOplockEx starts in SP1 documented start is 6.0
FsRtlCurrentOplock   before 6.1, declared
FsRtlDeleteExtraCreateParameterLookasideList   before 6.1 revision, declared
FsRtlFindExtraCreateParameter   before 6.1, declared
FsRtlFreeExtraCreateParameter   before 6.1, declared
FsRtlFreeExtraCreateParameterList   before 6.1, declared
FsRtlGetEcpListFromIrp   before 6.1, declared
FsRtlGetNextExtraCreateParameter   before 6.1, declared
FsRtlIncrementCcFastMdlReadWait   before 6.2, declared
FsRtlInitExtraCreateParameterLookasideList   before 6.1 revision, declared
FsRtlInitializeBaseMcbEx   before 2018, declared
FsRtlInsertExtraCreateParameter   before 6.1, declared
FsRtlInsertPerFileContext   before 6.2, declared
FsRtlIsEcpAcknowledged   before 6.1, declared
FsRtlIsEcpFromUserMode   before 6.1 revision, declared
FsRtlLogCcFlushError   before 6.2, declared
FsRtlLookupPerFileContext   before 6.2, declared
FsRtlMupGetProviderIdFromName   before 6.1, declared
FsRtlMupGetProviderInfoFromFileObject   before 6.1, declared
FsRtlNotifyCleanupAll   before 6.2, declared
FsRtlNotifyVolumeEventEx   before 6.2, declared
FsRtlOplockBreakToNone   before 6.1, declared
FsRtlRegisterFltMgrCalls    
FsRtlRegisterMupCalls    
FsRtlRegisterUncProviderEx    
FsRtlRemoveDotsFromPath   before 6.2, declared
FsRtlRemoveExtraCreateParameter   before 6.1, declared
FsRtlRemovePerFileContext   before 6.2, declared
FsRtlSetEcpListIntoIrp   before 6.1 revision, declared
FsRtlTeardownPerFileContexts   before 6.2, declared
FsRtlValidateReparsePointBuffer   before 6.2, declared

See in general that merging the IFS Kit into the WDK for Windows Vista did little, if anything, for getting newly added FsRtl functions documented. Almost all are declared in the NTIFS.H which the merger brought into much wider circulation, but almost all had to wait for the next WDK—and many for the one after—before they become documented.

Version 6.0 adds two functions that work with the BASE_MCB structure, which version 5.2 extracted from the older LARGE_MCB. As with the original BASE_MCB fuctions, these additions were declared in NTIFS.H but left out of the documentation. They looked to be still undocumented when checking online on 13th October 2018. Now in 2020, Microsoft’s website has documentation of them, both dated 19th October 2018.

Function Export History Documentation History Declaration History
HvlQueryConnection      
IoAllocateMiniCompletionPacket      
IoAllocateSfioStreamIdentifier      
IoApplyPriorityInfoThread   before 6.2, undocumented  
IoCallDriverStackSafe discontinued in 6.1    
IoCheckShareAccessEx   before 6.2, declared
documented start is 6.1
 
IoClearDependency starts in SP1;
discontinued in 1703
  declared start is 6.3
IoClearIrpExtraCreateParameter      
IoConnectInterruptEx      
IoCreateArcName      
IoCreateFileEx      
IoDeleteAllDependencyRelations starts in SP1;
discontinued in 1703
  declared start is 6.3
IoDisconnectInterruptEx      
IoDuplicateDependency starts in SP1   declared start is 6.3
IoFreeMiniCompletionPacket      
IoFreeSfioStreamIdentifier      
IoGetBootDiskInformationLite      
IoGetDevicePropertyData   before 6.1, declared  
IoGetIoPriorityHint      
IoGetIrpExtraCreateParameter      
IoGetSfioStreamIdentifier      
IoGetSymLinkSupportInformation starts in SP2    
IoGetTransactionParameterBlock      
IoInitializeWorkItem      
IoIsFileObjectIgnoringSharing   before 6.2, declared  
IoQueueWorkItemEx      
IoReplacePartitionUnit starts in SP1    
IoRequestDeviceEjectEx      
IoRetrievePriorityInfo   before 6.2, undocumented  
IoSetDependency starts in SP1   declared start is 6.3
IoSetDevicePropertyData   before 6.1, declared  
IoSetIoCompletionEx      
IoSetIoPriorityHint      
IoSetIoPriorityHintIntoFileObject      
IoSetIoPriorityHintIntoThread      
IoSetIrpExtraCreateParameter      
IoSetShareAccessEx   before 6.2, declared
documented start is 6.1
 
IoSizeofWorkItem      
IoUninitializeWorkItem      
IoWithinStackLimits   before 6.1, declared  

The IoConnectInterruptEx and IoDisconnectInterruptEx functions are also implemented in a statically linked library—in this case, iointex.lib—for use by new drivers that run on older versions.

Function Export History Documentation History
KeAlertThread    
KeAllocateCalloutStack    
KeDeregisterProcessorChangeCallback starts in SP1  
KeExpandKernelStackAndCalloutEx   before 6.1 revision, undocumented
in 6.1 revision, documented but not declared
KeFreeCalloutStack    
KeInvalidateRangeAllCaches    
KeQueryActiveProcessorCount    
KeQueryDpcWatchdogInformation   before 6.1, declared
KeQueryMaximumProcessorCount   before 6.1, declared
KeRegisterProcessorChangeCallback starts in SP1  
KeRemoveQueueEx starts in SP1  
KeRevertToUserAffinityThreadEx   before 6.1, declared
KeSetActualBasePriorityThread    
KeSetSystemAffinityThreadEx   before 6.1, declared
KeStartDynamicProcessor   before 6.1, declared
KeTestAlertThread starts in SP1  

Though KeRemoveQueueEx is not exported from the version 6.0 kernel before SP1, it plausibly was meant to be. It is declared in NTIFS.H from the WDK for Windows Vista and the original version 6.0 kernel not only has it as an internal routine but as the effective implementation of the old, documented KeRemoveQueue.

The undocumented KeStartDynamicProcessor is declared in the WDM.H from the WDK for Windows Vista, and then its declaration disappears except in the presumably accidental disclosure of NTOSP.H by Microsoft in early editions of the WDK for Windows 10.

Function Export History Documentation History Declaration History
LdrFindResourceEx_U      
LdrResFindResource      
LdrResFindResourceDirectory      
LdrResSearchResource      
LpcReplyWaitReplyPort      
LpcRequestWaitReplyPortEx      
LpcSendWaitReceivePort      
MmAllocateContiguousMemorySpecifyCacheNode   before 6.1, declared before 6.2, declared start is 5.0
MmBadPointer (data)   before 6.1, declared since 6.3, deprecated
MmCopyVirtualMemory      
MmIsDriverVerifyingByAddress   before 6.1, declared  
MmRotatePhysicalView      
MmSetUserExceptionCallout discontinued in 6.1    

Starting with the WDK for Windows 8.1, Microsoft formally deprecates the MmBadPointer variable’s declaration in favour of an MM_BAD_POINTER macro. A historical survey might be content with this, perhaps adding for completeness that the macro is not documented in and of itself. Indeed, in the downloadable package of WDK documentation for Windows 8.1 to integrate into Visual Studio, and again for Windows 10, the page for the variable has a link for the macro but the link is broken. More is going on here than mere untidiness. For background, remember that exported variables are imported as pointers. This can cause programmers something between an inconvenience and a complication. To help, Microsoft sometimes hides the declared variable behind a documented macro, as with KD_DEBUGGER_ENABLED for KdDebuggerEnabled. But the superseding of MmBadPointer by MM_BAD_POINTER is not for convenience. It is instead a correction: MmBadPointer was documented for use as a variable but its declaration is only what works for the kernel. For an importing module, the declaration is faulty. The variable is meant to hold an address that is guaranteed to be bad but using it as documented, and as done by Microsoft’s own RDBSS.SYS driver in versions 6.0 to 6.2 inclusive, instead produces an address that is certain to be good (being an address in the kernel’s data).

Function Export History Documentation History Declaration History
NtBuildGUID (data)      
NtBuildLab (data)      
NtClearAllSavepointsTransaction discontinued in SP1    
NtClearSavepointTransaction discontinued in SP1    
NtCommitComplete   before 6.1, declared
before 6.2, reserved
 
NtCommitEnlistment   before 6.1, declared
before 6.2, reserved
 
NtCommitTransaction   before 6.1, declared
before 6.2, reserved
 
NtCreateEnlistment   before 6.1, declared
before 6.2, reserved
 
NtCreateResourceManager   before 6.1, declared
before 6.2, reserved
 
NtCreateTransaction   before 6.1, declared
before 6.2, reserved
 
NtEnumerateTransactionObject   before 6.1, declared
before 6.2, reserved
 
NtFreezeTransactions      
NtGetEnvironmentVariableEx starts in SP1    
NtGetNotificationResourceManager   before 6.1, declared
before 6.2, reserved
 
NtMarshallTransaction discontinued in SP1    
NtOpenEnlistment   before 6.1, declared
before 6.2, reserved
 
NtOpenResourceManager   before 6.1, declared
before 6.2, reserved
 
NtOpenTransaction   before 6.1, declared
before 6.2, reserved
 
NtPrePrepareEnlistment   before 6.1, declared
before 6.2, reserved
 
NtPrepareComplete   before 6.1, declared
before 6.2, reserved
 
NtPrepareEnlistment   before 6.1, declared
before 6.2, reserved
 
NtPullTransaction discontinued in SP1    
NtQueryEnvironmentVariableInfoEx starts in SP1    
NtQueryInformationEnlistment   before 6.1, declared
before 6.2, reserved
 
NtQueryInformationResourceManager   before 6.1, declared
before 6.2, reserved
 
NtQueryInformationTransaction   before 6.1, declared
before 6.2, reserved
 
NtQueryInformationTransactionManager   before 6.1, declared
before 6.2, reserved
 
NtRollbackEnlistment   before 6.1, declared
before 6.2, reserved
 
NtRollbackTransaction   before 6.1, declared
before 6.2, reserved
 
NtSavepointComplete discontinued in SP1    
NtSavepointTransaction discontinued in SP1    
NtSetInformationEnlistment   before 6.1, declared
before 6.2, reserved
 
NtSetInformationResourceManager   before 6.1, declared
before 6.2, reserved
 
NtSetInformationTransaction   before 6.1, declared
before 6.2, reserved
 
NtStartTm discontinued in SP1    
NtThawTransactions      
NtTraceControl      

Functions whose names begin with Nt correspond closely with functions whose names have the Zw prefix instead (see below). Put aside some general points about how the two differ, and documentation of the Nt function is to a large extent implied by documentation of the Zw. Microsoft started making this explicit some time after releasing the WDK for Windows Vista. Perhaps not coincidentally, Windows Vista had just brought by far the largest addition yet of Nt functions, but since the documentation for Windows Vista leaves them alone they are here taken to have been initially undocumented or declared. Documentation in the WDK for Windows 7 gives each Nt function its own page and directs attention to the page for the corresponding Zw function. The latter might be thought to count for both, except that the former warns expressly “Do not call this routine from kernel-mode code.” This is here taken as documenting the Nt functions as reserved (certainly for kernel-mode use, which is this survey’s focus). Microsoft loosened the text significantly for Windows 8 to note that the Nt and Zw versions “can behave differently”, which is here taken as formally permitting their use, such that they are no longer documented as reserved.

Whatever the reason that several Nt functions for the new Transaction Manager feature do not survive to the first service pack, they weren’t born in some experimental backwater: though none were documented, all but one was declared.

Function Export History Documentation History Declaration History
ObDereferenceObjectDeferDelete   before 6.1, declared  
ObGetFilterVersion starts in SP1    
ObIsKernelHandle   before 6.1, declared  
ObRegisterCallbacks starts in SP1    
ObUnRegisterCallbacks starts in SP1    
POGOBuffer (data)      
PfFileInfoNotify      
PoDisableSleepStates      
PoGetSystemWake      
PoReenableSleepStates      
PoRegisterPowerSettingCallback      
PoSetDeviceBusyEx starts in SP1    
PoSetFixedWakeSource      
PoSetSystemWake      
PoUnregisterPowerSettingCallback      
PoUserShutdownInitiated      
PsAcquireProcessExitSynchronization      
PsChargeProcessCpuCycles discontinued in 6.1 (x64);
discontinued in 6.2 (x86)
   
PsEnterPriorityRegion      
PsIsCurrentThreadPrefetching      
PsIsProtectedProcess      
PsLeavePriorityRegion      
PsQueryProcessExceptionFlags starts in SP1    
PsReferenceProcessFilePointer      
PsReleaseProcessExitSynchronization      
PsResumeProcess      
PsSetCreateProcessNotifyRoutineEx starts in SP1    
PsSetCurrentThreadPrefetching      
PsSuspendProcess      
PsUILanguageComitted (data)      
RtlCmDecodeMemIoResource      
RtlCmEncodeMemIoResource      
RtlCompareAltitudes      
RtlComputeCrc32      
RtlCopyLuidAndAttributesArray      
RtlCopySidAndAttributesArray      
RtlDuplicateUnicodeString     declared start is 5.1
RtlFindClosestEncodableLength      
RtlFormatMessage      
RtlGetIntegerAtom      
RtlGetProductInfo      
RtlGetThreadLangIdByIndex      
RtlIdnToAscii      
RtlIdnToNameprepUnicode      
RtlIdnToUnicode      
RtlInvertRangeListEx      
RtlIoDecodeMemIoResource      
RtlIoEncodeMemIoResource      
RtlIsNormalizedString      
RtlIsNtDdiVersionAvailable      
RtlIsServicePackVersionInstalled      
RtlLocalTimeToSystemTime      
RtlLookupFirstMatchingElementGenericTableAvl   before 6.2, declared declared start is 5.1
RtlNormalizeString      
RtlNumberOfSetBitsUlongPtr   before 6.2, declared  
RtlQueryDynamicTimeZoneInformation      
RtlQueryElevationFlags      
RtlQueryModuleInformation      
RtlRunOnceBeginInitialize      
RtlRunOnceComplete      
RtlRunOnceExecuteOnce      
RtlRunOnceInitialize      
RtlSetDynamicTimeZoneInformation      
RtlSidHashInitialize      
RtlSidHashLookup      
RtlSystemTimeToLocalTime      
RtlValidateUnicodeString     declared start is 5.1

When first introduced, the RtlIsNtDdiVersionAvailable and RtlIsServicePackVersionInstalled functions were all but useless except if supported through a statically linked library. To the caller who imports these functions from the kernel, the documentation’s suggestions of testing for availability back to Windows 2000 is at best redundant because the caller necessarily is running on version 6.0 or higher. To a driver written for Windows Vista but capable of downgrading its expectations to whatever Windows it finds itself running on, these functions are useful only if the driver gets them from a statically linked library. The WDK supplies the library, named RTLVER.LIB, and has the headers arrange that building for a target operating system older than Windows Vista will need the library. The documentation, however, gives only the smallest hint of any of this—for no explained reason, these functions “Link to Rtlver.lib and Wdmsec.lib”—until an explanatory paragraph was added to the WDK for Windows 8. Do not miss the irony that by this time the WDK had stopped supporting the building of drivers for versions older than Windows Vista.

Function Export History Documentation History
SeAccessCheckFromState    
SeAuditHardLinkCreationWithTransaction    
SeAuditTransactionStateChange    
SeCaptureSubjectContextEx   before 10.0, undocumented
SeCloseObjectAuditAlarmForNonObObject    
SeComputeAutoInheritByObjectType    
SeCreateAccessStateEx    
SeDeleteObjectAuditAlarmWithTransaction    
SeExamineSacl    
SeGetLinkedToken    
SeLocateProcessImageName    
SeOpenObjectAuditAlarmForNonObObject    
SeOpenObjectAuditAlarmWithTransaction    
SeOpenObjectForDeleteAuditAlarmWithTransaction    
SeReportSecurityEventWithSubCategory    
SeSetAuthorizationCallbacks    
TmCancelPropagationRequest   before 6.1, declared
TmCommitComplete   before 6.1, declared
TmCommitEnlistment   before 6.1, declared
TmCommitTransaction   before 6.1, declared
TmCreateEnlistment   before 6.1, declared
TmCurrentTransaction   before 6.1, declared
TmDefaultTmOpenFileCount discontinued in SP1  
TmDereferenceEnlistmentKey   before 6.1, declared
TmEnableCallbacks   before 6.1, declared
TmEndPropagationRequest   before 6.1, declared
TmEnlistmentObjectType (data)   since 6.1, indirectly documented
TmFreezeTransactions   before 6.1, declared
TmGetTransactionId   before 6.1, declared
TmInitDefaultTemporaryTm discontinued in SP1  
TmInitSystem   before 6.1, declared
TmInitSystemPhase2   before 6.1, declared
TmInitializeResourceManager discontinued in 6.2  
TmInitializeTransaction discontinued in 6.2  
TmIsTransactionActive   before 6.1, declared
TmMarshallTransaction discontinued in SP1  
TmPrePrepareComplete   before 6.1, declared
TmPrePrepareEnlistment   before 6.1, declared
TmPrepareComplete   before 6.1, declared
TmPrepareEnlistment   before 6.1, declared
TmPropagationComplete    
TmPropagationFailed    
TmPullTransaction discontinued in SP1  
TmReadOnlyEnlistment   before 6.1, declared
TmRecoverEnlistment   before 6.1, declared
TmRecoverResourceManager   before 6.1, declared
TmRecoverTransactionManager   before 6.1, declared
TmReferenceEnlistmentKey   before 6.1, declared
TmRequestOutcomeEnlistment   before 6.1, declared
TmResourceManagerObjectType (data)   since 6.1, indirectly documented
TmRmIsNotificationQueueEmpty_Temporary discontinued in SP1  
TmRollbackComplete   before 6.1, declared
TmRollbackEnlistment   before 6.1, declared
TmRollbackTransaction   before 6.1, declared
TmSavepointComplete discontinued in SP1  
TmSavepointTransaction discontinued in SP1  
TmSetCurrentTransaction   before 6.1, declared
TmSetPreviousModeToKernel discontinued in SP1  
TmThawTransactions   before 6.1, declared
TmTransactionManagerObjectType (data)   since 6.1, indirectly documented
TmTransactionObjectType (data)   since 6.1, indirectly documented
TmpIsKTMCommitCoordinator starts in SP1;
discontinued in 6.2
 

As with most exported variables, TmEnlistmentObjectType , TmResourceMangerObjectType, TmTransactionManagerObjectType and TmTransactionObjectType are not themselves documented. Starting with the WDK for Windows 7, however, they get mentioned in the documentation of exported functions such as ObReferenceObjectByHandle from being intended as an argument.

Function Export History Documentation History
WheaAddErrorSource starts in SP1 before 2019, declared
WheaGetErrorSource starts in SP1  
WheaRegisterErrSrcInitializer discontinued in 6.1  
WheaReportHwError   before 6.1, declared
before 2019, declared
documented start is 1903

Microsoft’s online documentation of WheaAddErrorSource is dated 19th August 2019 and I see no reason to disbelieve it. Curiously, the function is declared in the WDK for Windows Vista, but among WDK for versions that actually do export the function, the declaration appears only in NTOSP.H from early editions for Windows 10.

That documentation of WheaReportHwError was delayed until 2019 is more certain. Microsoft dates the documentation to 6th March 2019 and the function’s availability to the 1903 release. While undocumented, it was declared in NTDDK.H from the WDK for Windows Vista, specifically, and then the declaration disappeared except for the accidentally disclosed NTOSP.H.

Function Export History Documentation History Declaration History
ZwAllocateLocallyUniqueId      
ZwAlpcAcceptConnectPort      
ZwAlpcCancelMessage      
ZwAlpcConnectPort      
ZwAlpcCreatePort      
ZwAlpcCreatePortSection      
ZwAlpcCreateResourceReserve      
ZwAlpcCreateSectionView      
ZwAlpcCreateSecurityContext      
ZwAlpcDeletePortSection      
ZwAlpcDeleteResourceReserve      
ZwAlpcDeleteSectionView      
ZwAlpcDeleteSecurityContext      
ZwAlpcDisconnectPort      
ZwAlpcQueryInformation      
ZwAlpcSendWaitReceivePort      
ZwAlpcSetInformation      
ZwCommitEnlistment   before 6.1, declared  
ZwCommitTransaction      
ZwCreateEnlistment      
ZwCreateIoCompletion      
ZwCreateKeyTransacted   before 6.1, declared  
ZwCreateResourceManager      
ZwCreateTransaction      
ZwCreateTransactionManager      
ZwEnumerateTransactionObject   before 6.1, declared  
ZwFlushBuffersFile      
ZwGetNotificationResourceManager   before 6.1, declared  
ZwImpersonateAnonymousToken      
ZwLoadKeyEx      
ZwLockProductActivationKeys      
ZwMarshallTransaction discontinued in SP1    
ZwOpenEnlistment      
ZwOpenKeyTransacted   before 6.1, declared  
ZwOpenResourceManager      
ZwOpenTransaction      
ZwOpenTransactionManager      
ZwPrePrepareEnlistment   before 6.1, declared  
ZwPrepareComplete   before 6.1, declared  
ZwPrepareEnlistment   before 6.1, declared  
ZwPullTransaction discontinued in SP1    
ZwQueryInformationEnlistment      
ZwQueryInformationResourceManager      
ZwQueryInformationTransaction      
ZwQueryInformationTransactionManager      
ZwQueryLicenseValue      
ZwQueryVirtualMemory   before 10.0, undocumented
before 2015-2018, declared
declared start is 5.0
ZwRecoverEnlistment   before 6.1, declared  
ZwRecoverResourceManager      
ZwRecoverTransactionManager      
ZwRemoveIoCompletion      
ZwRemoveIoCompletionEx      
ZwRequestPort      
ZwRollbackEnlistment   before 6.1, declared  
ZwRollbackTransaction      
ZwSavepointComplete discontinued in SP1    
ZwSavepointTransaction discontinued in SP1    
ZwSetInformationEnlistment      
ZwSetInformationTransaction      
ZwUnloadKeyEx      

In WDK documentation for Windows 10 as integrated into Visual Studio 2015, documentation of NtQueryVirtualMemory (which is not a kernel export in any version) would link to a page for its Zw partner but the link is broken. The ZwQueryVirtualMemory function is documented today, 27th September 2020, at Microsoft’s website and has been at least since 30th April 2018, and there’s no reason to doubt Microsoft on this even though this documentation would have it that the function’s minimum availability is Windows 10.

Function Export History Documentation History
_alloca_probe_16 x86 only  
_alloca_probe_8 x86 only  
_chkstk x86 only  
_strtoui64    
_swprintf    
_vswprintf    
bsearch    
psMUITest (data)    

Old Friend

The ancient KeIsExecutingDpc function was not at first taken up for export from the x64 kernel. It starts being exported from x64 builds in version 6.0.

Discontinued

Version 6.0 stops exporting a few functions (and variables). For each, the version in parentheses tells when exporting started.

As usual, none had yet been documented.

Discontinued (x64)

Two functions that continued at first as exports from the x64 kernel are not kept as exports from the x64 builds:

Both continue as x86 exports.