Geoff Chappell, Software Analyst
The large table on this page lists the 203 exports that were added to the Windows kernel in its first release for version 5.0., i.e., for the original Windows 2000. Almost all are still exported as of version 6.0.
Additions for Windows 2000 SP1, Windows 2000 SP3 and Windows 2000 SP4 are listed separately.
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 whole of the documentation is just that the function is reserved or obsolete, without even giving a prototype, then the function is highlighted red or highlighted pink, respectively. An undocumented function that is at least declared in one or another header file from the Windows Driver Kit 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 WDK (or IFS Kit) release, then it is shaded yellow to retain some of its previous status as undocumented.
Just more than 60% of these new exports for version 5.0 are nowadays documented. However, more than a sixth of these are documented only as being reserved, and one more only as obsolete. The proportion that are usefuly documented is therefore less than half. At the time these functions were documented, it does not seem to have been Microsoft’s standard practice to document which Windows versions have which kernel functions. For all documented functions in the table, including if marked as obsolete or reserved, assume that the WDK documentation either gives no version information or dates the function (correctly) to Windows 2000.
Of the undocumented, about 20% are at least declared in one or another of the WDK header files.
Function | Remarks |
---|---|
CcGetFlushedValidData | |
CcRemapBcb | |
CcWaitForCurrentLazyWriterActivity | |
DbgPrintReturnControlC | |
ExFreePoolWithTag | undocumented until 2000-2002 |
ExInterlockedFlushSList | x86 only; supported for x64 by macro using ExpInterlockedFlushSList |
ExSemaphoreObjectType (data) | mentioned since 2000-2006 in documentation of ObOpenObjectByPointer |
ExSetTimerResolution | |
ExUuidCreate | |
FsRtlAcquireFileExclusive | undocumented until 2000-2006 (IFS) |
FsRtlAllocateFileLock | |
FsRtlFreeFileLock | |
FsRtlInsertFilterContext | discontinued in 5.1 |
FsRtlLookupFilterContextInternal | discontinued in 5.1 |
FsRtlLookupLastLargeMcbEntryAndIndex | undocumented until 2000-2006 (IFS); documentation requires Windows XP and higher |
FsRtlNotifyVolumeEvent | undocumented until 2000-2006 (IFS); documentation requires Windows XP and higher |
FsRtlReleaseFile | undocumented until 2000-2006 |
FsRtlRemoveFilterContext | discontinued in 5.1 |
FsRtlResetLargeMcb | undocumented until 2000-2006 (IFS); documentation requires Windows XP and higher |
FsRtlTeardownFilterContexts | discontinued in 5.1 |
InbvAcquireDisplayOwnership | |
InbvCheckDisplayOwnership | |
InbvDisplayString | |
InbvEnableBootDriver | |
InbvEnableDisplayString | |
InbvInstallDisplayStringFilter | |
InbvIsBootDriverInstalled | |
InbvNotifyDisplayOwnershipLost | |
InbvResetDisplay | |
InbvSetScrollRegion | |
InbvSetTextColor | |
InbvSolidColorFill | |
InitSafeBootMode (data) | documented since 2005-2006 on WDK page Determining Whether the Operating System Is Running in Safe Mode |
IoAcquireRemoveLockEx | |
IoAllocateDriverObjectExtension | |
IoAllocateWorkItem | |
IoCancelFileOpen | documented as reserved in DDK (not IFS Kit) from 2000-2002 until 2005-2006 |
IoCheckQuerySetFileInformation | undocumented until 2000-2006 (IFS) |
IoCheckQuerySetVolumeInformation | undocumented until 2000-2006 (IFS) |
IoCheckQuotaBufferValidity | |
IoCreateDriver | |
IoCreateStreamFileObjectLite | undocumented until 2000-2006 (IFS) |
IoDeleteDriver | |
IoFreeWorkItem | |
IoGetAttachedDeviceReference | |
IoGetBootDiskInformation | |
IoGetDeviceInterfaceAlias | |
IoGetDeviceInterfaces | |
IoGetDeviceProperty | |
IoGetDmaAdapter | |
IoGetDriverObjectExtension | |
IoGetRequestorProcessId | |
IoGetRequestorSessionId | undocumented until 2000-2006 (IFS); documentation requires Windows Server 2003 SP1, and higher |
IoInitializeRemoveLockEx | |
IoInvalidateDeviceRelations | |
IoInvalidateDeviceState | |
IoIsValidNameGraftingBuffer | undocumented until 2000-2006 (IFS) |
IoIsWdmVersionAvailable | |
IoOpenDeviceInterfaceRegistryKey | |
IoOpenDeviceRegistryKey | |
IoPnPDeliverServicePowerNotification | discontinued in 6.1 |
IoQueueWorkItem | |
IoRegisterBootDriverReinitialization | undocumented until 2000-2002 |
IoRegisterDeviceInterface | |
IoRegisterLastChanceShutdownNotification | undocumented until 2000-2002 |
IoRegisterPlugPlayNotification | |
IoReleaseRemoveLockAndWaitEx | undocumented until 2000-2002 |
IoReleaseRemoveLockEx | |
IoReportDetectedDevice | |
IoReportResourceForDetection | |
IoReportTargetDeviceChange | |
IoReportTargetDeviceChangeAsynchronous | |
IoRequestDeviceEject | |
IoReuseIrp | |
IoSetDeviceInterfaceState | |
IoSetIoCompletion | |
IoSynchronousInvalidateDeviceRelations | |
IoUnregisterPlugPlayNotification | |
IoWMIAllocateInstanceIds | |
IoWMIRegistrationControl | |
IoWMISuggestInstanceName | |
IoWMIWriteEvent | |
KdDisableDebugger | undocumented until 2008-2009 |
KdEnableDebugger | undocumented until 2008-2009 |
KdEnteredDebugger (data) | |
KeQueryActiveProcessors | undocumented until 2000-2002; not declared unless SINGLE_GROUP_LEGACY_API defined |
KeQueryInterruptTime | x86 only; supported for x64 by macro to access shared user data |
KeQueryPriorityThread | |
KeRevertToUserAffinityThread | not declared unless SINGLE_GROUP_LEGACY_API defined |
KeSaveStateForHibernate (data) | |
KeSetSystemAffinityThread | undocumented until 2007; not declared unless SINGLE_GROUP_LEGACY_API defined |
KeStackAttachProcess | undocumented until 2000-2006 (IFS) |
KeUnstackDetachProcess | undocumented until 2000-2006 (IFS) |
KiEnableTimerWatchdog | x86 only; discontinued in 6.0 |
LpcPortObjectType (data) | |
LpcRequestWaitReplyPort | |
Mm64BitPhysicalAddress (data) | undocumented until 2007; mentioned in documentation page Performing DMA in 64-Bit Windows |
MmAddPhysicalMemory | |
MmAllocateContiguousMemorySpecifyCache | |
MmAllocatePagesForMdl | |
MmFreeContiguousMemorySpecifyCache | |
MmFreePagesFromMdl | |
MmGetPhysicalMemoryRanges | undocumented until 2000-2002 |
MmGetSystemRoutineAddress | undocumented until 2000-2002 |
MmGetVirtualForPhysical | undocumented until 2000-2002 |
MmIsDriverVerifying | undocumented until 2000-2002; documented until 2008-2009 as reserved |
MmMapUserAddressesToPage | undocumented until 2000-2002 |
MmMapViewInSessionSpace | undocumented until 2000-2002 |
MmProbeAndLockProcessPages | undocumented until 2000-2002 |
MmProbeAndLockSelectedPages | |
MmRemovePhysicalMemory | undocumented until 2000-2002 |
MmTrimAllSystemPagableMemory | |
MmUnmapViewInSessionSpace | undocumented until 2000-2002 |
NlsOemCodePage (data) | |
NtQueryQuotaInformationFile | undocumented until 2008-2009; documentation requires Windows 7 and higher |
NtQuerySystemInformation | |
NtSetEaFile | |
NtSetQuotaInformationFile | undocumented until 2008-2009; documentation requires Windows 7 and higher |
NtSetVolumeInformationFile | undocumented until 2008-2009; documentation requires Windows Server 2003 and higher |
PoCallDriver | |
PoCancelDeviceNotify | |
PoRegisterDeviceNotify | |
PoRegisterSystemState | |
PoRequestPowerIrp | |
PoSetHiberRange | |
PoSetPowerState | |
PoSetSystemState | |
PoShutdownBugCheck | |
PoStartNextPowerIrp | |
PoUnregisterSystemState | |
ProbeForRead | |
PsDisableImpersonation | |
PsJobType (data) | |
PsRestoreImpersonation | |
PsSetLoadImageNotifyRoutine | |
RtlAddRange | |
RtlCaptureContext | undocumented until 2000-2006 (IFS); documented until 2008-2009 as reserved; documentation requires Windows XP and higher |
RtlCopyRangeList | |
RtlDeleteAce | undocumented until 2000-2006 (IFS); documentation requires Windows Server 2003 SP1 and higher |
RtlDeleteOwnersRanges | |
RtlDeleteRange | |
RtlFindClearRuns | |
RtlFindLastBackwardRunClear | |
RtlFindLeastSignificantBit | |
RtlFindMostSignificantBit | |
RtlFindNextForwardRunClear | |
RtlFindRange | |
RtlFreeRangeList | |
RtlGUIDFromString | |
RtlGetAce | undocumented until 2000-2006 (IFS); documentation requires Windows XP and higher |
RtlGetFirstRange | |
RtlGetNextRange | |
RtlGetNtGlobalFlags | |
RtlGetSaclSecurityDescriptor | undocumented until 2000-2006 (IFS); documentation requires Windows Server 2003 SP1, and higher; declaration requires Windows Server 2003 SP1, and higher |
RtlImageDirectoryEntryToData | |
RtlInitializeRangeList | |
RtlInsertElementGenericTableFull | conditionally redefined by macro as RtlInsertElementGenericTableFullAvl |
RtlInvertRangeList | |
RtlIsGenericTableEmpty | conditionally redefined by macro as RtlIIsGenericTableEmptyAvl |
RtlIsRangeAvailable | |
RtlIsValidOemCharacter | |
RtlLookupElementGenericTableFull | conditionally redefined by macro as RtlILookupElementGenericTableFullAvl |
RtlMergeRangeLists | |
RtlRealPredecessor | |
RtlRealSuccessor | |
RtlSelfRelativeToAbsoluteSD | undocumented until 2000-2006 (IFS); documentation requires Windows Server 2003 SP1, and higher; declaration requires Windows Server 2003 SP1, and higher |
RtlSelfRelativeToAbsoluteSD2 | |
RtlSizeHeap | |
RtlStringFromGUID | |
RtlSubtreePredecessor | |
RtlSubtreeSuccessor | |
RtlUlongByteSwap | x86 only; conditionally redefined by macro using compiler intrinsic _byteswap_ulong (x64 also) |
RtlUlonglongByteSwap | x86 only; conditionally redefined by macro using compiler intrinsic _byteswap_uint64 (x64 also) |
RtlUshortByteSwap | x86 only; conditionally redefined by macro using compiler intrinsic _byteswap_ushort (x64 also) |
RtlValidRelativeSecurityDescriptor | undocumented until 2005-2006 |
RtlVolumeDeviceToDosName | documented since 2000-2002 as obsolete for Windows XP and higher |
RtlWalkFrameChain | undocumented until 2006 |
SeAssignSecurityEx | |
SeCreateClientSecurityFromSubjectContext | |
SeImpersonateClientEx | |
SeQueryInformationToken | |
SeQuerySessionIdToken | undocumented until 2000-2006 (IFS) |
SeSetSecurityDescriptorInfoEx | |
SeTokenIsAdmin | |
SeTokenIsRestricted | |
ZwAdjustPrivilegesToken | |
ZwCancelIoFile | |
ZwCancelTimer | undocumented until 2005-2006 |
ZwFlushVirtualMemory | undocumented until 2000-2006 (IFS); documentation requires Windows XP and higher |
ZwInitiatePowerAction | |
ZwOpenTimer | undocumented until 2005-2006 |
ZwPowerInformation | |
ZwQueryDefaultUILanguage | |
ZwQueryDirectoryObject | |
ZwQueryEaFile | |
ZwQueryInstallUILanguage | |
ZwRestoreKey | |
ZwSetDefaultUILanguage | |
ZwSetEaFile | |
ZwSetSecurityObject | undocumented until 2000-2006 (IFS); documentation requires Windows XP and higher |
ZwSetVolumeInformationFile | undocumented until 2000-2006 (IFS); documentation requires Windows Server 2003 and higher |
_except_handler3 | x86 only |
_itow |