Kernel Exports Added For Version 3.51

The table below lists the 103 functions and variables that are newly exported from the the Windows kernel for the original release of version 3.51. All but seven are still exported in version 10.0. Also listed are four which first appear in version 3.51 but after its original release. One was added for SP1 or SP2 (the former having not been found for inspection). Three more first appear in SP5, i.e., are not exported from SP4.

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.

Function Export History Documentation History Declaration History
DbgPrompt   before 6.0, undocumented  
ExAcquireSharedStarveExclusive   since 6.1 revision, documented start is 5.0 since 6.0, declared start is 5.0
ExCreateCallback   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
ExEventObjectType (data)   before 4.0, undocumented
since 5.0, indirectly documented
 
ExNotifyCallback   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
ExPostSystemEvent discontinued in 5.0    
ExRaiseAccessViolation   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
ExRaiseDatatypeMisalignment   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
ExRaiseException      
ExRegisterCallback   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
ExReinitializeResourceLite   since 6.1 revision, documented start is 5.0 since 6.0, declared start is 5.0
ExUnregisterCallback   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0

As with most exported variables, ExEventObjectType is not itself documented. Starting with the DDK for Windows 2000, however, it gets mentioned in the documentation of exported functions such as ObReferenceObjectByHandle from its being intended as an argument.

Function Export History Documentation History Declaration History
FsRtlPostPagingFileStackOverflow   before 5.0 (IFS), undocumented
since 6.1, documented start is 5.0
since 6.0, declared start is 5.0
HalDispatchTable (data)      
HalPrivateDispatchTable (data)      
InterlockedDecrement x86 only since 6.1 revision, documented start is 5.0  
InterlockedExchange x86 only since 6.1 revision, documented start is 5.0  
InterlockedIncrement x86 only since 6.1 revision, documented start is 5.0  
IoDriverObjectType (data)      
IoGetAttachedDevice   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
IoQueryFileInformation   before 5.0 (IFS), undocumented
before 5.1 (IFS) to 6.0, declared
since 6.0, declared start is 5.0
IoQueryVolumeInformation   before 5.0 (IFS), undocumented
before 5.1 (IFS) to 6.0, declared
since 6.0, declared start is 5.0
IoRegisterFsRegistrationChange   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
IoUnregisterFsRegistrationChange   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
KeAddSystemServiceTable      
KeI386Call16BitFunction x86 only;
discontinued in 6.2
   
KeI386ReleaseGdtSelectors x86 only;
discontinued in 6.2
   
KeI386SetGdtSelector x86 only;
discontinued in 6.2
   
KeInsertHeadQueue   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
KeProfileInterruptWithSource      
KePulseEvent   before 5.0, undocumented
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
KeServiceDescriptorTable (data) since 5.2 SP2, x86 only    
KeSetDmaIoCoherency      
KeSetImportanceDpc   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
KeSetTargetProcessorDpc   before 5.0, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
KeUserModeCallback      

Of the few kernel exports that have ever been discontinued selectively, KeServiceDescriptorTable is the oldest. It exists in all x64 kernels but it very plausibly was never meant to be exported from any. That it is exported from the very first x64 kernel, i.e., version 5.2 SP1, is perhaps an oversight which was corrected as soon as SP2.

Function Export History Documentation History Declaration History
LdrAccessResource      
LdrEnumResources      
LdrFindResource_U      
LpcRequestPort      
MmAdjustWorkingSetSize      
MmCreateSection     declared start is 5.0
MmLockPagableDataSection   since 6.1 revision, documented start is 5.0 since 6.0, declared start is 5.0
MmLockPagableSectionByHandle   since 6.1 revision, documented start is 5.0 since 6.0, declared start is 5.0
MmMapViewInSystemSpace   before 5.1, declared since 6.0, declared start is 5.0
MmMapViewOfSection      
MmPageEntireDriver   since 6.1 revision, documented start is 5.0 since 6.0, declared start is 5.0
MmResetDriverPaging   since 6.1 revision, documented start is 5.0 since 6.0, declared start is 5.0
MmSectionObjectType (data)      
MmSecureVirtualMemory   before 5.1, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
MmSetBankedSection      
MmUnmapViewInSystemSpace   before 5.1, declared since 6.0, declared start is 5.0
MmUnmapViewOfSection      
MmUnsecureVirtualMemory   before 5.1, declared
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
NtAllocateUuids      
NtBuildNumber      
PoQueryPowerSequence discontinued in 5.0    
PoRegisterDeviceForIdleDetection discontinued in 4.0;
restored in 5.0
before 5.0, undocumented
since 6.1 revision, documented start is 5.0
since 6.0, declared start is 5.0
PoRequestPowerChange discontinued in 5.0    
PsEstablishWin32Callouts      
PsLookupProcessByProcessId   before 5.1 (IFS) to 6.0, undocumented
documented start is 5.0
 
PsLookupThreadByThreadId   before 5.1 (IFS) to 6.0, undocumented
documented start is 5.0
 
PsReferenceImpersonationToken   before 5.1 (IFS), undocumented
in 6.0, documented start is 5.1
since 6.1, documented start is 5.0
since 6.0, declared start is 5.0
PsReferencePrimaryToken   before 5.1 (IFS), undocumented
in 6.0, documented start is 5.1
since 6.1, documented start is 5.0
since 6.0, declared start is 5.0
PsSetProcessPriorityByClass      
RtlAddAce   before 5.1 (IFS) to 6.0, undocumented
documented start is 5.2 SP1
since 6.0, declared start is 5.0
RtlAllocateAndInitializeSid discontinued in 5.0 before 5.1 (IFS) to 6.0, undocumented since 6.0, declared start is 5.0
RtlAreAllAccessesGranted      
RtlCaptureStackBackTrace   before 5.1 (IFS) to 6.0, undocumented
before 6.1, declared
documented start is 5.1
since 6.0, declared start is 5.1
RtlCreateUnicodeString   before 5.0 (IFS), undocumented
since 5.1 (IFS) to 6.0, documented start is 5.0
before 5.1 (IFS) to 6.0, not declared
since 6.0, declared start is 5.0
RtlFindMessage      
RtlFormatCurrentUserKeyPath      
RtlImageNtHeader      
RtlInitializeSid   before 5.0 (IFS), undocumented
since 5.1 (IFS) to 6.0, documented start is 5.0
before 5.1 (IFS) to 6.0, not declared
since 6.0, declared start is 5.0
RtlIntegerToChar      
RtlIsNameLegalDOS8Dot3 starts in SP2 before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
RtlMultiByteToUnicodeN   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
RtlSetSaclSecurityDescriptor      
RtlUnicodeStringToInteger   since 6.1 revision, documented start is 5.0 before 4.0, not declared
since 6.0, declared start is 5.0
RtlUnicodeToMultiByteSize   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
RtlZeroHeap      

By the time RtlAllocateAndInitializeSid got documented in the WDK, the kernel had stopped exporting it. Even in the two versions that do have it as a kernel-mode export, no kernel-mode use of it is known. In user mode, the function is exported from NTDLL in all versions.

Function Export History Documentation History Declaration History
SeCaptureSecurityDescriptor     declared start is 5.0
SeCloseObjectAuditAlarm      
SeCreateAccessState      
SeDeleteAccessState      
SeMarkLogonSessionForTerminationNotification starts in SP5 before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
SePrivilegeCheck   before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
SePrivilegeObjectAuditAlarm      
SeRegisterLogonSessionTerminatedRoutine starts in SP5 before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
SeReleaseSecurityDescriptor     declared start is 5.0
SeUnregisterLogonSessionTerminatedRoutine starts in SP5 before 5.0 (IFS), undocumented since 6.0, declared start is 5.0
ZwAlertThread      
ZwClearEvent      
ZwCreateTimer discontinued in 4.0;
restored in 5.0
before 4.0, undocumented
before 6.0, declared
since 6.0, declared start is 5.0
ZwDuplicateToken   before 6.1, undocumented
documented start is 5.0
 
ZwNotifyChangeKey   before 5.1 (IFS) to 6.0, undocumented
before 6.1, declared
documented start is 5.1
since 6.0, declared start is 5.0
ZwOpenProcess   before 6.0, undocumented
since 6.1 revision, documented start is 5.0
 
ZwOpenThread      
ZwPulseEvent      
ZwQueryInformationProcess      
ZwQuerySecurityObject   before 5.1 (IFS), undocumented
documented start is 5.1
since 6.0, declared start is 5.0
ZwResetEvent      
ZwSetDefaultLocale      
ZwSetSystemInformation      
ZwSetTimer discontinued in 4.0;
restored in 5.0
before 4.0, undocumented
before 6.0, declared
since 6.0, declared start is 5.0
ZwWaitForMultipleObjects