NTDLL 3.51 Named Exports

The table below lists all the functions that are exported from NTDLL version 3.51. Most are still exported as of version 6.1.

Of roughly 2,400 functions that have ever been exported from NTDLL, nearly 1,000 date from as far back as Windows NT 3.51. Since by far the most of the other half were added for Windows Vista, it is striking that in terms of available functions, though not perhaps in terms of what can or should be done with them, a fully-informed low-level user-mode programmer from the mid-1990s would not have had much to learn for a decade. Also striking is that hardly any of these original functions are yet documented as being available in user mode as exports from NTDLL.

Documentation status is conveyed by colour coding. NTDLL functions that actually are documented as exports from NTDLL are shown with no background colour. So too are the NTDLL implementations of documented functions from the C Run-Time Library. Functions that are documented in the Windows Driver Kit (WDK), typically as exports from the NT kernel for use by ring 0 software such as device drivers, but sometimes with non-specific talk of being callable from user mode, are lightly shaded blue. Documented functions that are known not to have been documented immediately they were introduced are a darker blue if the only known documentation is in the WDK, else pink. If the delayed documentation came specifically from its listing among the Settlement Program Interfaces in late 2002, then the function is less pink since Microsoft at least acknowledged that the documentation was late. A function is shaded grey if it seems not to be documented but is known to be the entire low-level implementation of some function in a higher-level DLL such as KERNEL32 or ADVAPI32. Identifying these is a work in progress. Functions that look to be completely undocumented are highlighted yellow. However, an undocumented function is shaded yellow, as semi-documented, if it is at least declared in one or another header file from the WDK or, exceptionally, the SDK. If you browse with scripting enabled, hovering over any text that has a background colour should produce a tooltip that explains the formatting.

For the handful that are yet documented as NTDLL functions and the more whose kernel-mode equivalents are documented in the WDK, Microsoft either lies about the applicable versions or says nothing. Though the latter is unhelpful, it seems the less unethical and is anyway par for the course at this level: the WDK documentation never has bothered much about versions. Or so things stood until 2009. Preparation of a second WDK for Windows 7 (version 7600.16385.1, dated 1st December 2009) included the addition of “Available in Windows 2000 and later versions of Windows” to the documentation of just about every function for which no minimum version was yet specified. This is not unreasonable inasmuch as it means only that Microsoft no longer supports earlier versions of Windows, but of course it will easily be taken by some as accurate history. For now, this development is ignored in the table below, which has as its reference version only the first WDK for Windows 7 (version 7600.16385.0, dated 18th June 2009).

Of course, where Microsoft documents versions for which a function is available, the intention may just be that those are the versions for which the function is implemented well enough to consider usable by programmers in general. It could be that the function is exported from earlier versions but in an experimental or even defective implementation that Microsoft cannot support. Certainly, a pattern is discernable in which many of these original functions are said to be available starting from whatever Windows version was contemporaneous with the function’s introduction to the documentation. That is perhaps how RtlGetDaclSecurityDescriptor is dated from Windows Server 2003 SP1 (yes, so precisely) and is surely the only way anyone can credibly mean that ZwLockFile is not usable until Windows 7. Just as discernable a pattern is that where the documentation gives one implausibly recent version the relevant header file gives another (by declaring the function only for the right values of the NTDDI_VERSION macro), and this other is typically less recent. For instance, programmers in general are told that NtSetInformationToken is available from Windows 7, but the WDK evidently has been prepared so that some programmer had the use of this function even when developing for Windows XP.

Special mention must be made of a few NTDLL functions that Microsoft documented as Settlement Program Interfaces in late 2002 apparently because they are used by Microsoft Middleware products such as Internet Explorer. There were not many at this low level. A good proportion have become un-documented in the years since, at least as exports from NTDLL. It should anyway not go unnoticed that Microsoft’s selection of functions to document for the settlement was very strict, if not grudging and perverse. See for instance that RtlTimeToSecondsSince1970 got documented but its inverse RtlSecondsSince1970ToTime did not.

Though most of these original NTDLL functions are still exported as of version 6.1, there are some notable changes. The several dozen functions for floating-point emulation eventually got discontinued in what looks like a clean-up across multiple versions (contemporaneous with the release of 64-bit Windows for the x64 platform). These functions drop out from version 5.1 at Windows XP SP2 and from version 5.2 at Windows Server 2003 SP1 and do not survive at all to version 6.0. Some may say this was long past time, especially once Windows started requiring the CMPXCHG8B instruction and thus in practice a CPU recent enough to be sure of having a built-in floating-point unit.

One oddity had better be remarked on now lest it be thought a mistake in the table. The NtGetTickCount function was dropped just for version 5.1. Its companion, ZwGetTickCount, was also dropped for version 5.1 but only NtGetTickCount reappears for version 5.2.

One of the Remarks signals correction of a bug. See that several of the NTDLL exports correspond closely to functions that are exported from KERNEL32, though not in all versions. The KERNEL32 export is typically a forward to NTDLL, so that it resolved from KERNEL32’s export directory without needing any code in KERNEL32. That ordinarily means that if the NTDLL function is undocumented, then the documentation for KERNEL32 is as good for NTDLL. However, one of the forwards demonstrates an exception. The KERNEL32 function HeapFree is originally forwarded to the NTDLL function RtlFreeHeap, but the former returns a BOOL and the latter a BOOLEAN. When RtlFreeHeap fails, it returns zero in the al register, leaving the high 24 bits of eax undefined. Forwarding from HeapFree then has the unwanted effect that the return value of a failed HeapFree may be non-zero, as if for success. This eventually got corrected in version 6.0. Presumably by oversight, it is restored in Windows 7 for HeapFree as an export from the new KERNELBASE.

Function Remarks
CsrAllocateCaptureBuffer  
CsrAllocateCapturePointer discontinued in 5.0
CsrAllocateMessagePointer  
CsrCaptureMessageBuffer  
CsrCaptureMessageString  
CsrCaptureTimeout  
CsrClientCallServer  
CsrClientConnectToServer  
CsrClientMaxMessage discontinued in 4.0
CsrClientSendMessage discontinued in 4.0
CsrClientThreadConnect discontinued in 4.0
CsrFreeCaptureBuffer  
CsrIdentifyAlertableThread  
CsrNewThread discontinued in 6.0 from Windows Vista SP1
CsrProbeForRead discontinued in 6.0
CsrProbeForWrite discontinued in 6.0
CsrSetPriorityClass  
CsrpProcessCallbackRequest discontinued in 4.0
DbgBreakPoint whole implementation of KERNEL32 function DebugBreak in 3.51 to 6.0;
documentation since 2000-2002 until 2005-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as compiler intrinsic __debugbreak
DbgPrint documentation since 2000-2002 requires Windows 2000 and higher
DbgPrompt undocumented until 2005-2006
DbgSsHandleKmApiMsg discontinued in 5.1
DbgSsInitialize discontinued in 5.1
DbgUiConnectToDbg  
DbgUiContinue  
DbgUiWaitStateChange  
DbgUserBreakPoint  
KiUserApcDispatcher  
KiUserCallbackDispatcher  
KiUserExceptionDispatcher  
LdrAccessResource  
LdrDisableThreadCalloutsForDll  
LdrEnumResources  
LdrFindEntryForAddress  
LdrFindResourceDirectory_U  
LdrFindResource_U  
LdrGetDllHandle  
LdrGetProcedureAddress  
LdrInitializeThunk  
LdrLoadDll  
LdrProcessRelocationBlock  
LdrQueryImageFileExecutionOptions  
LdrQueryProcessModuleInformation  
LdrShutdownProcess  
LdrShutdownThread  
LdrUnloadDll  
LdrVerifyImageMatchesChecksum  
NPXEMULATORTABLE discontinued in 5.1
NlsMbCodePageTag (data) documented in 2008-2009 as NLS_MB_CODE_PAGE_TAG macro
NlsMbOemCodePageTag (data)  
NtAcceptConnectPort  
NtAccessCheck  
NtAccessCheckAndAuditAlarm declaration requires Windows XP and higher
NtAdjustGroupsToken declaration requires Windows XP and higher
NtAdjustPrivilegesToken declaration requires Windows 2000 and higher
NtAlertResumeThread  
NtAlertThread  
NtAllocateLocallyUniqueId undocumented until 2007;
not declared
NtAllocateUuids  
NtAllocateVirtualMemory undocumented until 2008-2009;
declaration requires Windows 2000 and higher
NtCallbackReturn  
NtCancelIoFile  
NtCancelTimer  
NtClearEvent  
NtClose undocumented in SDK until 2001-2002;
undocumented in WDK until 2007;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
NtCloseObjectAuditAlarm declaration requires Windows XP and higher
NtCompleteConnectPort  
NtConnectPort  
NtContinue  
NtCreateDirectoryObject undocumented until 2007;
not declared
NtCreateEvent undocumented until 2008-2009;
documented for Windows XP and higher;
not declared
NtCreateEventPair  
NtCreateFile undocumented until settlement in 2002;
documentation withdrawn from SDK in 2003-2006 but persists in MSDN Library until 2007-2008;
undocumented in WDK until 2007;
documentation in SDK requires Windows 2000 and higher;
documentation in WDK since 2008-2009 requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
NtCreateIoCompletion  
NtCreateKey undocumented until 2007;
not declared
NtCreateMailslotFile  
NtCreateMutant  
NtCreateNamedPipeFile  
NtCreatePagingFile  
NtCreatePort  
NtCreateProcess  
NtCreateProfile  
NtCreateSection undocumented until 2007;
declaration requires Windows XP and higher
NtCreateSemaphore  
NtCreateSymbolicLinkObject  
NtCreateThread  
NtCreateTimer  
NtCreateToken  
NtCurrentTeb x86 only;
defined inline as read from fs segment
NtDelayExecution  
NtDeleteFile undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtDeleteKey undocumented until 2007;
not declared
NtDeleteValueKey undocumented until 2007;
documentation since 2008-2009 requires Windows 2000 and higher;
not declared
NtDeviceIoControlFile undocumented until 2001-2003;
undocumented in WDK until 2008-2009;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
NtDisplayString  
NtDuplicateObject undocumented until 2008-2009;
documented as “reserved for system use”;
not declared
NtDuplicateToken undocumented until 2008-2009;
documentation requires Windows 2000 and higher;
declaration requires Windows XP and higher
NtEnumerateBus discontinued in 4.0
NtEnumerateKey undocumented until 2007;
not declared
NtEnumerateValueKey undocumented until 2007;
not declared
NtExtendSection  
NtFlushBuffersFile undocumented until 2008-2009;
not declared
NtFlushInstructionCache  
NtFlushKey undocumented until 2007;
not declared
NtFlushVirtualMemory undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtFlushWriteBuffer  
NtFreeVirtualMemory undocumented until 2008-2009;
declaration requires Windows 2000 and higher
NtFsControlFile undocumented until 2008-2009;
declaration requires Windows 2000 and higher
NtGetContextThread  
NtGetPlugPlayEvent  
NtGetTickCount discontinued in 5.1;
restored in 5.2
NtImpersonateClientOfPort  
NtImpersonateThread  
NtInitializeRegistry  
NtListenPort  
NtLoadDriver undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtLoadKey  
NtLockFile undocumented until 2008-2009;
documentation requires Windows 7 and higher;
not declared
NtLockVirtualMemory  
NtMakeTemporaryObject undocumented until 2007;
not declared
NtMapViewOfSection undocumented until 2007;
not declared
NtNotifyChangeDirectoryFile  
NtNotifyChangeKey undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtOpenDirectoryObject undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtOpenEvent undocumented until 2007;
documentation requires Windows Server 2003 and higher;
not declared
NtOpenEventPair  
NtOpenFile undocumented until settlement in 2002;
documentation withdrawn from SDK in 2003-2006 but persists in MSDN Library until 2007-2008;
undocumented in WDK until 2007;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
NtOpenIoCompletion  
NtOpenKey undocumented until 2007;
not declared
NtOpenMutant  
NtOpenObjectAuditAlarm declared for Windows XP and higher
NtOpenProcess undocumented until 2007
NtOpenProcessToken declared for Windows 2000 and higher
NtOpenSection undocumented until 2007;
not declared
NtOpenSemaphore  
NtOpenSymbolicLinkObject undocumented until 2007;
not declared
NtOpenThread undocumented until 2004-2006;
documentation withdrawn in 2007-2008
NtOpenThreadToken declaration requires Windows 2000 and higher
NtOpenTimer  
NtPlugPlayControl  
NtPrivilegeCheck declaration requires Windows XP and higher
NtPrivilegeObjectAuditAlarm declaration requires Windows XP and higher
NtPrivilegedServiceAuditAlarm declaration requires Windows XP and higher
NtProtectVirtualMemory  
NtPulseEvent  
NtQueryAttributesFile  
NtQueryDefaultLocale  
NtQueryDirectoryFile undocumented until 2008-2009;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
NtQueryDirectoryObject  
NtQueryEaFile  
NtQueryEvent  
NtQueryInformationFile undocumented until 2007;
declaration requires Windows 2000 and higher
NtQueryInformationPort  
NtQueryInformationProcess undocumented until 2001-2002;
documentation until 2004-2006 requires Windows 2000 and higher
NtQueryInformationThread undocumented until 2001-2002;
documentation until 2004-2006 requires Windows 2000 and higher
NtQueryInformationToken undocumented until 2008-2009;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
NtQueryIntervalProfile  
NtQueryIoCompletion  
NtQueryKey undocumented until 2007;
not declared
NtQueryMutant  
NtQueryObject undocumented until 2004-2006;
documentation withdrawn from MSDN Library in 2007-2008;
undocumented in WDK until 2008-2009;
documentation in WDK requires Windows 2000 and higher;
declaration in WDK requires Windows NT 4.0 and higher
NtQueryPerformanceCounter undocumented until 2004-2006;
documentation withdrawn from MSDN Library in 2007-2008
NtQuerySection  
NtQuerySecurityObject undocumented until 2008-2009;
documentation requires Windows XP and higher;
declared for Windows 2000 and higher
NtQuerySemaphore  
NtQuerySymbolicLinkObject undocumented until 2007;
not declared
NtQuerySystemEnvironmentValue  
NtQuerySystemInformation undocumented until 2001-2003;
documentation until 2004-2006 requires Windows 2000 and higher
NtQuerySystemTime undocumented until settlement in 2002;
documentation until 2004-2006 requires Windows 2000 and higher
NtQueryTimer  
NtQueryTimerResolution  
NtQueryValueKey undocumented until 2007;
not declared
NtQueryVirtualMemory  
NtQueryVolumeInformationFile undocumented until 2008-2009;
declaration requires Windows 2000 and higher
NtRaiseException  
NtRaiseHardError  
NtReadFile undocumented until 2007;
declaration requires Windows 2000 and higher
NtReadRequestData  
NtReadVirtualMemory  
NtRegisterNewDevice discontinued in 4.0
NtRegisterThreadTerminatePort  
NtReleaseMutant  
NtReleaseProcessMutant discontinued in 4.0
NtReleaseSemaphore  
NtRemoveIoCompletion  
NtReplaceKey  
NtReplyPort  
NtReplyWaitReceivePort  
NtReplyWaitReplyPort  
NtRequestPort  
NtRequestWaitReplyPort  
NtResetEvent  
NtRestoreKey  
NtResumeThread  
NtSaveKey  
NtSetContextThread  
NtSetDefaultHardErrorPort  
NtSetDefaultLocale  
NtSetEaFile  
NtSetEvent undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtSetHighEventPair  
NtSetHighWaitLowEventPair  
NtSetHighWaitLowThread discontinued in 5.0
NtSetInformationFile undocumented until 2007;
declaration requires Windows 2000 and higher
NtSetInformationKey  
NtSetInformationObject  
NtSetInformationProcess  
NtSetInformationThread undocumented until 2007;
declaration requires Windows XP and higher
NtSetInformationToken undocumented until 2008-2009;
documentation requires Windows 7 and higher;
declaration requires Windows XP and higher
NtSetIntervalProfile  
NtSetIoCompletion  
NtSetLdtEntries  
NtSetLowEventPair  
NtSetLowWaitHighEventPair  
NtSetLowWaitHighThread discontinued in 5.0
NtSetSecurityObject undocumented until 2008-2009;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
NtSetSystemEnvironmentValue  
NtSetSystemInformation  
NtSetSystemPowerState  
NtSetSystemTime  
NtSetTimer  
NtSetTimerResolution  
NtSetValueKey undocumented until 2007;
not declared
NtSetVolumeInformationFile undocumented until 2008-2009;
documentation requires Windows Server 2003 and higher;
declaration requires Windows 2000 and higher
NtShutdownSystem  
NtStartProfile  
NtStopProfile  
NtSuspendThread  
NtSystemDebugControl  
NtTerminateProcess undocumented until 2007;
not declared
NtTerminateThread  
NtTestAlert  
NtUnloadDriver undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtUnloadKey  
NtUnlockFile undocumented until 2008-2009;
documentation requires Windows 7 and higher;
declaration requires Windows 2000 and higher
NtUnlockVirtualMemory  
NtUnmapViewOfSection undocumented until 2007;
not declared
NtVdmControl  
NtW32Call discontinued in 4.0 from Windows NT 4.0 SP4
NtWaitForMultipleObjects  
NtWaitForProcessMutant discontinued in 4.0
NtWaitForSingleObject undocumented until 2001-2002;
undocumented in WDK until 2008-2009;
documented in SDK as “deprecated”;
documentation in SDK requires Windows 2000 and higher;
documentation in WDK requires Windows XP and higher;
not declared in WDK
NtWaitHighEventPair  
NtWaitLowEventPair  
NtWriteFile undocumented until 2007;
declaration requires Windows 2000 and higher
NtWriteRequestData  
NtWriteVirtualMemory  
PfxFindPrefix declared for Windows 2000 and higher
PfxInitialize declared for Windows 2000 and higher
PfxInsertPrefix declared for Windows 2000 and higher
PfxRemovePrefix declared for Windows 2000 and higher
RestoreEm87Context discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
RtlAbortRXact  
RtlAbsoluteToSelfRelativeSD undocumented until 2000-2006;
documentation requires Microsoft Windows Server 2003 SP1, and higher;
declaration requires Windows Server 2003 SP1, and higher
RtlAcquirePebLock  
RtlAcquireResourceExclusive  
RtlAcquireResourceShared  
RtlAddAccessAllowedAce undocumented until 2000;
declaration requires Windows 2000 and higher
RtlAddAccessDeniedAce  
RtlAddAce undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1 and higher;
declaration requires Windows 2000 and higher
RtlAddActionToRXact  
RtlAddAttributeActionToRXact  
RtlAddAuditAccessAce  
RtlAdjustPrivilege  
RtlAllocateAndInitializeSid undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
RtlAllocateHeap undocumented until 2000-2006;
forwarded from KERNEL32 function HeapAlloc in 3.51 and higher;
forwarded from KERNELBASE function HeapAlloc in 6.1 and higher;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
RtlAnsiCharToUnicodeChar undocumented until 2008-2009;
documentation requires Windows 2000 and higher;
not declared
RtlAnsiStringToUnicodeSize redefined by macro in terms of NlsMbCodePageTag and RtlxAnsiStringToUnicodeSize
RtlAnsiStringToUnicodeString undocumented in SDK until settlement in 2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlAppendAsciizToString  
RtlAppendStringToString undocumented until 2000;
documentation since 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlAppendUnicodeStringToString declaration requires Windows 2000 and higher
RtlAppendUnicodeToString declaration requires Windows 2000 and higher
RtlApplyRXact  
RtlApplyRXactNoFlush  
RtlAreAllAccessesGranted  
RtlAreAnyAccessesGranted  
RtlAreBitsClear undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlAreBitsSet undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlAssert undocumented until 2001-2002;
documented as “reserved for system use”
RtlCaptureStackBackTrace forwarded from KERNEL32 function CaptureStackBackTrace in 5.1 to 6.0;
undocumented in WDK until 2008-2009;
documentation in WDK requires Windows XP and higher;
declaration in WDK requires Windows XP and higher
RtlCharToInteger undocumented in SDK until settlement in 2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlCheckRegistryKey declaration requires Windows 2000 and higher
RtlClearAllBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlClearBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlCompactHeap whole implementation of KERNEL32 function HeapCompact in 3.51 to 6.0
RtlCompareMemory forwarded from KERNEL32 in corresponding 5.2, and higher (x64 only);
undocumented in SDK until settlement in 2002 (but long documented in WDK);
documentation withdrawn from SDK in 2004-2006;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlCompareMemoryUlong undocumented until 2000;
declaration requires Windows 2000 and higher
RtlCompareString declaration requires Windows 2000 and higher
RtlCompareUnicodeString declaration requires Windows 2000 and higher
RtlCompressBuffer undocumented until 2000-2006;
documented until 2007 as “reserved for system use”;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlConsoleMultiByteToUnicodeN  
RtlConvertExclusiveToShared  
RtlConvertLongToLargeInteger x86 only;
declared as deprecated for Windows XP and higher
RtlConvertSharedToExclusive  
RtlConvertSidToUnicodeString undocumented until settlement in 2002;
undocumented in WDK until 2008-2009;
documentation requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlConvertUiListToApiList  
RtlConvertUlongToLargeInteger x86 only;
declared as deprecated for Windows XP and higher
RtlCopyLuid undocumented until 2000;
declaration requires Windows 2000 and higher
RtlCopyLuidAndAttributesArray  
RtlCopySecurityDescriptor  
RtlCopySid undocumented until 2000;
declaration requires Windows 2000 and higher
RtlCopySidAndAttributesArray  
RtlCopyString declaration requires Windows 2000 and higher
RtlCopyUnicodeString declaration requires Windows 2000 and higher
RtlCreateAcl undocumented until 2000;
declaration requires Windows 2000 and higher
RtlCreateAndSetSD  
RtlCreateEnvironment  
RtlCreateHeap undocumented until 2000-2006;
documentation requires Microsoft Windows XP and higher;
declaration requires Windows XP and higher
RtlCreateProcessParameters  
RtlCreateQueryDebugBuffer  
RtlCreateRegistryKey declaration requires Windows 2000 and higher
RtlCreateSecurityDescriptor declaration requires Windows 2000 and higher
RtlCreateTagHeap  
RtlCreateUnicodeString undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlCreateUnicodeStringFromAsciiz  
RtlCreateUserProcess  
RtlCreateUserSecurityObject  
RtlCreateUserThread  
RtlCustomCPToUnicodeN undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
RtlCutoverTimeToSystemTime  
RtlDeNormalizeProcessParams  
RtlDecompressBuffer undocumented until 2000-2006;
documented until 2007 as “reserved for system use”;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlDecompressFragment undocumented until 2000-2006;
documented until 2007 as “reserved for system use”;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlDelete undocumented until 2000;
declaration requires Windows 2000 and higher
RtlDeleteAce undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1, and higher;
declaration requires Windows 2000 and higher
RtlDeleteCriticalSection whole implementation of KERNEL32 function DeleteCriticalSection in 3.51;
forwarded from KERNEL32 function DeleteCriticalSection in 4.0 and higher;
forwarded from KERNELBASE function DeleteCriticalSection in 6.1 and higher
RtlDeleteElementGenericTable undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlDeleteElementGenericTableAvl
RtlDeleteRegistryValue declaration requires Windows 2000 and higher
RtlDeleteResource  
RtlDeleteSecurityObject  
RtlDestroyEnvironment  
RtlDestroyHeap undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows XP and higher
RtlDestroyProcessParameters  
RtlDestroyQueryDebugBuffer  
RtlDetermineDosPathNameType_U  
RtlDoesFileExists_U  
RtlDosPathNameToNtPathName_U  
RtlDosSearchPath_U  
RtlDumpResource  
RtlEnlargedIntegerMultiply x86 only;
documented as obsolete;
declared as deprecated
RtlEnlargedUnsignedDivide x86 only;
documented as obsolete;
declared as deprecated
RtlEnlargedUnsignedMultiply x86 only;
documented as obsolete;
declared as deprecated
RtlEnterCriticalSection forwarded from KERNEL32 function EnterCriticalSection in 4.0 and higher;
forwarded from KERNELBASE function EnterCriticalSection in 6.1 and higher
RtlEnumProcessHeaps  
RtlEnumerateGenericTable undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlEnumerateGenericTableAvl
RtlEnumerateGenericTableWithoutSplaying undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlEnumerateGenericTableWithoutSplayingAvl
RtlEqualComputerName  
RtlEqualDomainName  
RtlEqualLuid undocumented until 1996-2000;
redefined by macro
RtlEqualPrefixSid undocumented until 2000;
declaration requires Windows 2000 and higher
RtlEqualSid undocumented until 2000;
declaration requires Windows 2000 and higher
RtlEqualString declaration requires Windows 2000 and higher
RtlEqualUnicodeString declaration requires Windows 2000 and higher
RtlEraseUnicodeString  
RtlExpandEnvironmentStrings_U  
RtlExtendHeap discontinued in 6.0
RtlExtendedIntegerMultiply x86 only;
undocumented in SDK until settlement in 2002 (but long documented in WDK);
documentation withdrawn from SDK in 2003-2006 but persists in MSDN Library until 2007-2008;
documented as obsolete;
x86 declaration in WDK requires Windows 2000 and higher, and is deprecated;
x64 supported in WDK by inline definition using 64-bit arithmetic, and is deprecated
RtlExtendedLargeIntegerDivide x86 only;
undocumented in SDK until settlement in 2002 (but long documented in WDK);
documentation withdrawn from SDK in 2003-2006 but persists in MSDN Library until 2007-2008;
documented as obsolete;
x86 declaration in WDK requires Windows 2000 and higher, and is deprecated;
x64 supported in WDK by inline definition using 64-bit arithmetic, and is deprecated
RtlExtendedMagicDivide x86 only;
documented as obsolete;
x86 declaration requires Windows 2000 and higher, and is deprecated;
x64 supported by inline definition using 64-bit arithmetic, and is deprecated
RtlFillMemory forwarded from KERNEL32 in 3.51 to 6.0;
redefined by macro in terms of memset function
RtlFillMemoryUlong x86 only;
undocumented until 2000;
x86 declaration requires Windows XP and higher;
x64 supported by inline definition using compiler intrinsic __stosq
RtlFindClearBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlFindClearBitsAndSet undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlFindLongestRunClear undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlFindLongestRunSet discontinued in 5.0
RtlFindMessage  
RtlFindSetBits undocumented until 1996-2000;
declared for Windows 2000 and higher
RtlFindSetBitsAndClear undocumented until 1996-2000;
declared for Windows 2000 and higher
RtlFirstFreeAce  
RtlFormatCurrentUserKeyPath  
RtlFormatMessage  
RtlFreeAnsiString undocumented in SDK until 2001-2002 (but long documented in the WDK);
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlFreeHeap forwarded from KERNEL32 function HeapFree in 3.51 to 5.2;
forwarded from KERNELBASE function HeapFree in 6.1 and higher;
undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
RtlFreeOemString undocumented in WDK until 2000;
undocumented in SDK until 2001-2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlFreeSid undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
RtlFreeUnicodeString undocumented in SDK until 2001-2002 (but long documented in the WDK);
documentation in SDK requires Windows 2000 and higher
RtlGenerate8dot3Name undocumented until 2000;
declaration requires Windows 2000 and higher;
different return type declared for Windows Vista SP1, and higher
RtlGetAce undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
RtlGetCallersAddress undocumented until 2000-2001;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher;
conditional redefinition by macro in terms of compiler intrinsic _ReturnAddress (x64)
RtlGetCompressionWorkSpaceSize undocumented until 2000-2006;
documented until 2007 as “reserved for system use”;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlGetControlSecurityDescriptor  
RtlGetCurrentDirectory_U  
RtlGetDaclSecurityDescriptor undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1, and higher;
declaration requires Windows 2000 and higher
RtlGetElementGenericTable undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlGetElementGenericTableAvl
RtlGetFullPathName_U  
RtlGetGroupSecurityDescriptor undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1, and higher;
declaration requires Windows Server 2003 SP1, and higher
RtlGetLongestNtPathLength  
RtlGetNtGlobalFlags  
RtlGetNtProductType  
RtlGetOwnerSecurityDescriptor undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlGetProcessHeaps whole implementation of KERNEL32 function GetProcessHeaps in 3.51 to 6.0;
whole implementation of KERNELBASE function GetProcessHeaps in 6.1 and higher
RtlGetSaclSecurityDescriptor undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1, and higher;
declaration requires Windows Server 2003 SP1, and higher
RtlGetUserInfoHeap  
RtlIdentifierAuthoritySid undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows XP and higher
RtlImageDirectoryEntryToData  
RtlImageNtHeader  
RtlImpersonateSelf  
RtlInitAnsiString undocumented in SDK until settlement in 2002 (but long documented in WDK);
documentation withdrawn from SDK in 2004-2006;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlInitCodePageTable undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
RtlInitNlsTables  
RtlInitString undocumented in SDK until 2001-2002 (but long documented in WDK);
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlInitUnicodeString undocumented in SDK until settlement i 2002 (but long documented in WDK);
documentation in SDK requires Windows 2000 and higher
RtlInitializeBitMap undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlInitializeContext  
RtlInitializeCriticalSection forwarded from KERNEL32 function InitializeCriticalSection in 6.0 and higher;
forwarded from KERNELBASE function InitializeCriticalSection in 6.1 and higher
RtlInitializeGenericTable undocumented until 2000;
documentation in 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlInitializeGenericTableAvl
RtlInitializeRXact  
RtlInitializeResource  
RtlInitializeSid undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlInsertElementGenericTable undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlInsertElementGenericTableAvl
RtlIntegerToChar  
RtlIntegerToUnicodeString declaration requires Windows 2000 and higher
RtlIsDosDeviceName_U  
RtlIsGenericTableEmpty undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlIsGenericTableEmptyAvl
RtlIsNameLegalDOS8Dot3 undocumented until 2000;
undocumented in SDK until settlement in 2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlIsTextUnicode  
RtlLargeIntegerAdd x86 only;
documented as obsolete;
declared as deprecated
RtlLargeIntegerArithmeticShift x86 only;
documented as obsolete;
declared as deprecated for Windows XP and higher
RtlLargeIntegerDivide x86 only;
documented as obsolete;
x86 declaration requires Windows 2000 and higher, and is deprecated;
x64 supported by inline definition using 64-bit arithmetic, and is deprecated
RtlLargeIntegerNegate x86 only;
documented as obsolete;
declared as deprecated
RtlLargeIntegerShiftLeft x86 only;
documented as obsolete;
declared as deprecated for Windows XP and higher
RtlLargeIntegerShiftRight x86 only;
documented as obsolete;
declared as deprecated for Windows XP and higher
RtlLargeIntegerSubtract x86 only;
documented as obsolete;
declared as deprecated
RtlLargeIntegerToChar  
RtlLeaveCriticalSection forwarded from KERNEL32 function LeaveCriticalSection in 4.0 and higher;
forwarded from KERNELBASE function LeaveCriticalSection in 6.1 and higher
RtlLengthRequiredSid undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlLengthSecurityDescriptor declaration requires Windows 2000 and higher
RtlLengthSid undocumented until 2000;
declared for Windows 2000 and higher
RtlLocalTimeToSystemTime undocumented until settlement in 2002 (but long documented in WDK);
documentation requires Windows 2000 and higher
RtlLockHeap  
RtlLookupElementGenericTable undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlLookupElementGenericTableAvl
RtlMakeSelfRelativeSD  
RtlMapGenericMask undocumented until 2001-2002;
declaration requires Windows 2000 and higher
RtlMoveMemory forwarded from KERNEL32 in 3.51 and higher (x86 only);
redefined by macro in terms of memmove function
RtlMultiByteToUnicodeN undocumented until 2000;
declaration requires Windows 2000 and higher
RtlMultiByteToUnicodeSize undocumented until 2000;
declaration requires Windows 2000 and higher
RtlNewInstanceSecurityObject  
RtlNewSecurityGrantedAccess  
RtlNewSecurityObject  
RtlNormalizeProcessParams  
RtlNtStatusToDosError undocumented in SDK until settlement in 2002;
undocumented in WDK until 2000-2006;
documentation in SDK requires Windows 2000 and higher;
documented in WDK until 2007 as “reserved for system use”;
documentation in WDK since 2007 requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlNumberGenericTableElements undocumented until 2000;
declaration requires Windows 2000 and higher;
conditionally redefined by macro as RtlNumberGenericElementsAvl
RtlNumberOfClearBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlNumberOfSetBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlOemStringToUnicodeSize undocumented until 2000;
redefined by macro in terms of NlsMbOemCodePageTag and RtlxOemStringToUnicodeSize
RtlOemStringToUnicodeString undocumented until 2000;
declaration requires Windows 2000 and higher
RtlOemToUnicodeN undocumented until 2000;
declaration requires Windows 2000 and higher
RtlOpenCurrentUser  
RtlPcToFileHeader forwarded from KERNEL32 function RtlPcToFileHeader in 5.2 and 6.0 (x64 only)
RtlPrefixString  
RtlPrefixUnicodeString undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlProtectHeap  
RtlQueryEnvironmentVariable_U  
RtlQueryInformationAcl  
RtlQueryProcessBackTraceInformation  
RtlQueryProcessDebugInformation  
RtlQueryProcessHeapInformation  
RtlQueryProcessLockInformation  
RtlQueryRegistryValues undocumented in SDK until settlement in 2002 (but long documented in WDK);
documentation in SDK requires Windows 2000 and higher;
documentation withdrawn from SDK in 2004-2006;
declaration in WDK requires Windows 2000 and higher
RtlQuerySecurityObject  
RtlQueryTagHeap  
RtlQueryTimeZoneInformation  
RtlRaiseException forwarded from KERNEL32 function RtlRaiseException in 5.2 and 6.0 (x64 only)
RtlRaiseStatus  
RtlRandom undocumented until 2000;
declaration requires Windows 2000 and higher
RtlReAllocateHeap forwarded from KERNEL32 function HeapReAlloc in 3.51 and higher;
forwarded from KERNELBASE function HeapReAlloc in 6.1 and higher
RtlRealPredecessor undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlRealSuccessor undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlReleasePebLock  
RtlReleaseResource  
RtlRemoteCall  
RtlResetRtlTranslations  
RtlRunDecodeUnicodeString  
RtlRunEncodeUnicodeString  
RtlSecondsSince1970ToTime undocumented until 2000;
declaration requires Windows 2000 and higher
RtlSecondsSince1980ToTime undocumented until 2000;
declaration requires Windows 2000 and higher
RtlSelfRelativeToAbsoluteSD undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1, and higher;
declaration requires Windows Server 2003 SP1, and higher
RtlSetAllBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlSetBits undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlSetCurrentDirectory_U  
RtlSetCurrentEnvironment  
RtlSetDaclSecurityDescriptor declaration requires Windows 2000 and higher
RtlSetEnvironmentVariable  
RtlSetGroupSecurityDescriptor undocumented until 2000-2006;
documentation requires Windows Server 2003 SP1, and higher;
declaration requires Windows Server 2003 SP1, and higher
RtlSetInformationAcl  
RtlSetOwnerSecurityDescriptor undocumented until 2000;
declaration requires Windows 2000 and higher
RtlSetSaclSecurityDescriptor  
RtlSetSecurityObject  
RtlSetTimeZoneInformation  
RtlSetUserFlagsHeap  
RtlSetUserValueHeap  
RtlSizeHeap forwarded from KERNEL32 function HeapSize in 3.51 and higher;
forwarded from KERNELBASE function HeapSize in 6.1 and higher
RtlSplay undocumented until 2000;
declaration requires Windows 2000 and higher
RtlStartRXact  
RtlSubAuthorityCountSid undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows XP and higher
RtlSubAuthoritySid undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlSubtreePredecessor undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlSubtreeSuccessor undocumented until 2000;
documentation since 2000-2006 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
RtlSystemTimeToLocalTime  
RtlTimeFieldsToTime declaration requires Windows 2000 and higher
RtlTimeToElapsedTimeFields  
RtlTimeToSecondsSince1970 undocumented in WDK until 2000;
undocumented in SDK until settlement in 2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlTimeToSecondsSince1980 undocumented until 2000;
declaration requires Windows 2000 and higher
RtlTimeToTimeFields declaration requires Windows 2000 and higher
RtlUnicodeStringToAnsiSize undocumented until 1996-2000;
redefined by macro in terms of NlsMbCodePageTag and RtlxUnicodeStringToAnsiSize
RtlUnicodeStringToAnsiString undocumented in SDK until settlement in 2002 (but long documented in WDK);
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlUnicodeStringToCountedOemString undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUnicodeStringToInteger declaration requires Windows 2000 and higher
RtlUnicodeStringToOemSize undocumented until 2000;
redefined by macro in terms of NlsMbOemCodePageTag and RtlxUnicodeStringToOemSize
RtlUnicodeStringToOemString undocumented in WDK until 2000;
undocumented in SDK until 2001-2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlUnicodeToCustomCPN undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
RtlUnicodeToMultiByteN undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUnicodeToMultiByteSize undocumented in WDK until 2000;
undocumented in SDK until settlement in 2002;
documentation in SDK requires Windows 2000 and higher;
declaration in WDK requires Windows 2000 and higher
RtlUnicodeToOemN undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUniform undocumented until settlement in 2002;
documentation until 2006-2007 requires at least Windows 2000;
documentation withdrawn from SDK in 2003-2006 (but persists in MSDN Library until 2007-2008)
RtlUnlockHeap  
RtlUnwind forwarded from KERNEL32 function RtlUnwind in 3.51 to 6.0
RtlUpcaseUnicodeChar undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlUpcaseUnicodeString declaration requires Windows 2000 and higher
RtlUpcaseUnicodeStringToAnsiString  
RtlUpcaseUnicodeStringToCountedOemString undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUpcaseUnicodeStringToOemString undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUpcaseUnicodeToCustomCPN undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
RtlUpcaseUnicodeToMultiByteN undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUpcaseUnicodeToOemN undocumented until 2000;
declaration requires Windows 2000 and higher
RtlUpperChar undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlUpperString declaration requires Windows 2000 and higher
RtlUsageHeap discontinued in 6.0
RtlValidAcl  
RtlValidSecurityDescriptor declaration requires Windows 2000 and higher
RtlValidSid undocumented until 2000;
declaration requires Windows 2000 and higher
RtlValidateHeap  
RtlValidateProcessHeaps  
RtlWalkHeap  
RtlWriteRegistryValue declaration requires Windows 2000 and higher
RtlZeroHeap  
RtlZeroMemory forwarded from KERNEL32 in 3.51 and higher;
redefined by macro in terms of memset function
RtlpInitializeRtl discontinued in 4.0
RtlpNtCreateKey  
RtlpNtEnumerateSubKey  
RtlpNtMakeTemporaryKey  
RtlpNtOpenKey  
RtlpNtQueryValueKey  
RtlpNtSetValueKey  
RtlpUnWaitCriticalSection  
RtlpWaitForCriticalSection  
RtlxAnsiStringToUnicodeSize undocumented until 2005-2006;
declaration requires Windows 2000 and higher
RtlxOemStringToUnicodeSize undocumented until 2007;
documented as “reserved for system use”
RtlxUnicodeStringToAnsiSize undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlxUnicodeStringToOemSize undocumented until 2007;
documented as “reserved for system use”
SaveEm87Context discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
ZwAcceptConnectPort  
ZwAccessCheck  
ZwAccessCheckAndAuditAlarm  
ZwAdjustGroupsToken  
ZwAdjustPrivilegesToken  
ZwAlertResumeThread  
ZwAlertThread  
ZwAllocateLocallyUniqueId undocumented until 2005-2006
ZwAllocateUuids  
ZwAllocateVirtualMemory undocumented until 2000;
declaration requires Windows 2000 and higher
ZwCallbackReturn  
ZwCancelIoFile  
ZwCancelTimer undocumented until 2005-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
ZwClearEvent  
ZwClose declaration requires Windows 2000 and higher
ZwCloseObjectAuditAlarm  
ZwCompleteConnectPort  
ZwConnectPort  
ZwContinue  
ZwCreateDirectoryObject declaration requires Windows 2000 and higher
ZwCreateEvent undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwCreateEventPair  
ZwCreateFile documentation since 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
ZwCreateIoCompletion  
ZwCreateKey declaration requires Windows 2000 and higher
ZwCreateMailslotFile  
ZwCreateMutant  
ZwCreateNamedPipeFile  
ZwCreatePagingFile  
ZwCreatePort  
ZwCreateProcess  
ZwCreateProfile  
ZwCreateSection undocumented until 2000;
declaration requires Windows 2000 and higher
ZwCreateSemaphore  
ZwCreateSymbolicLinkObject  
ZwCreateThread  
ZwCreateTimer undocumented until 2005-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
ZwCreateToken  
ZwDelayExecution  
ZwDeleteFile undocumented until 2000-2006;
documentation requires XP and higher;
declaration requires Windows 2000 and higher
ZwDeleteKey declaration requires Windows 2000 and higher
ZwDeleteValueKey undocumented until 2002-2004;
documentation under Installable File Systems requires Windows XP and later;
documentation since 2008-2009 requires Windows 2000 and later;
declaration requires Windows 2000 and higher
ZwDeviceIoControlFile undocumented until 2000;
declaration requires Windows 2000 and higher
ZwDisplayString declaration requires Windows 2000 and higher
ZwDuplicateObject undocumented until 2000-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
ZwDuplicateToken undocumented until 2007;
documentation requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
ZwEnumerateBus discontinued in 4.0
ZwEnumerateKey declaration requires Windows 2000 and higher
ZwEnumerateValueKey declaration requires Windows 2000 and higher
ZwExtendSection  
ZwFlushBuffersFile undocumented until 2000-2006;
declaration requires Windows Vista and higher
ZwFlushInstructionCache  
ZwFlushKey declaration requires Windows 2000 and higher
ZwFlushVirtualMemory undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwFlushWriteBuffer  
ZwFreeVirtualMemory undocumented until 2000;
declaration requires Windows 2000 and higher
ZwFsControlFile undocumented until 2000-2006;
declaration requires Windows 2000 and higher
ZwGetContextThread  
ZwGetPlugPlayEvent  
ZwGetTickCount discontinued in 5.1
ZwImpersonateClientOfPort  
ZwImpersonateThread  
ZwInitializeRegistry  
ZwListenPort  
ZwLoadDriver undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwLoadKey  
ZwLockFile undocumented until 2008-2009;
documentation requires Windows 7 and higher;
declaration requires Windows Vista and higher
ZwLockVirtualMemory  
ZwMakeTemporaryObject declaration requires Windows 2000 and higher
ZwMapViewOfSection declaration requires Windows 2000 and higher
ZwNotifyChangeDirectoryFile  
ZwNotifyChangeKey undocumented until 2007;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwOpenDirectoryObject undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwOpenEvent undocumented until 2000-2006;
documentation requires Windows Server 2003 and higher;
declaration requires Windows Server 2003 and higher
ZwOpenEventPair  
ZwOpenFile undocumented until 1996-2000;
declaration requires Windows 2000 and higher
ZwOpenIoCompletion  
ZwOpenKey declaration requires Windows 2000 and higher
ZwOpenMutant  
ZwOpenObjectAuditAlarm  
ZwOpenProcess undocumented until 2005-2006
ZwOpenProcessToken  
ZwOpenSection declaration requires Windows 2000 and higher
ZwOpenSemaphore  
ZwOpenSymbolicLinkObject undocumented until 1996-2000;
Windows 2000 and higher
ZwOpenThread  
ZwOpenThreadToken  
ZwOpenTimer undocumented until 2005-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
ZwPlugPlayControl  
ZwPrivilegeCheck  
ZwPrivilegeObjectAuditAlarm  
ZwPrivilegedServiceAuditAlarm  
ZwProtectVirtualMemory  
ZwPulseEvent  
ZwQueryAttributesFile  
ZwQueryDefaultLocale  
ZwQueryDirectoryFile undocumented until 2000;
documentation since 2000-2006 requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwQueryDirectoryObject  
ZwQueryEaFile  
ZwQueryEvent  
ZwQueryInformationFile declaration requires Windows 2000 and higher
ZwQueryInformationPort  
ZwQueryInformationProcess undocumented until 2004-2006;
documentation requires Windows 2000 and higher;
not declared
ZwQueryInformationThread  
ZwQueryInformationToken undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwQueryIntervalProfile  
ZwQueryIoCompletion  
ZwQueryKey declaration requires Windows 2000 and higher
ZwQueryMutant  
ZwQueryObject undocumented until 2007;
documentation requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
ZwQueryPerformanceCounter  
ZwQuerySection  
ZwQuerySecurityObject undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwQuerySemaphore  
ZwQuerySymbolicLinkObject undocumented until 1996-2000;
declaration requires Windows 2000 and higher
ZwQuerySystemEnvironmentValue  
ZwQuerySystemInformation undocumented until 2004-2006;
not declared
ZwQuerySystemTime  
ZwQueryTimer  
ZwQueryTimerResolution  
ZwQueryValueKey declaration requires Windows 2000 and higher
ZwQueryVirtualMemory  
ZwQueryVolumeInformationFile undocumented until 2000-2006;
declaration requires Windows 2000 and higher
ZwRaiseException  
ZwRaiseHardError  
ZwReadFile declaration requires Windows 2000 and higher
ZwReadRequestData  
ZwReadVirtualMemory  
ZwRegisterNewDevice discontinued in 4.0
ZwRegisterThreadTerminatePort  
ZwReleaseMutant  
ZwReleaseProcessMutant discontinued in 4.0
ZwReleaseSemaphore  
ZwRemoveIoCompletion  
ZwReplaceKey  
ZwReplyPort  
ZwReplyWaitReceivePort  
ZwReplyWaitReplyPort  
ZwRequestPort  
ZwRequestWaitReplyPort  
ZwResetEvent  
ZwRestoreKey  
ZwResumeThread  
ZwSaveKey  
ZwSetContextThread  
ZwSetDefaultHardErrorPort  
ZwSetDefaultLocale  
ZwSetEaFile  
ZwSetEvent undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwSetHighEventPair  
ZwSetHighWaitLowEventPair  
ZwSetHighWaitLowThread discontinued in 5.0
ZwSetInformationFile declaration requires Windows 2000 and higher
ZwSetInformationKey declaration requires Windows 7 and higher
ZwSetInformationObject  
ZwSetInformationProcess  
ZwSetInformationThread declaration requires Windows 2000 and higher
ZwSetInformationToken undocumented until 2000-2006;
documentation until 2008-2009 requires Windows XP and higher;
documentation since 2008-2009 requires Windows 7 and higher;
declaration requires Windows 7 and higher
ZwSetIntervalProfile  
ZwSetIoCompletion  
ZwSetLdtEntries  
ZwSetLowEventPair  
ZwSetLowWaitHighEventPair  
ZwSetLowWaitHighThread discontinued in 5.0
ZwSetSecurityObject undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwSetSystemEnvironmentValue  
ZwSetSystemInformation  
ZwSetSystemPowerState  
ZwSetSystemTime  
ZwSetTimer undocumented until 2005-2006;
documented as “reserved for system use”;
declaration requires Windows 2000 and higher
ZwSetTimerResolution  
ZwSetValueKey declaration requires Windows 2000 and higher
ZwSetVolumeInformationFile undocumented until 2000-2006;
documentation requires Windows Server 2003 and higher;
declaration requires Windows 2000 and higher
ZwShutdownSystem  
ZwStartProfile  
ZwStopProfile  
ZwSuspendThread  
ZwSystemDebugControl  
ZwTerminateProcess undocumented until 2005-2006
ZwTerminateThread  
ZwTestAlert  
ZwUnloadDriver undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwUnloadKey  
ZwUnlockFile undocumented until 2008-2009;
documentation requires Windows 7 and higher;
declaration requires Windows Vista and higher
ZwUnlockVirtualMemory  
ZwUnmapViewOfSection declaration requires Windows 2000 and higher
ZwVdmControl  
ZwW32Call discontinued in 4.0 from Windows NT 4.0 SP4
ZwWaitForMultipleObjects  
ZwWaitForProcessMutant discontinued in 4.0
ZwWaitForSingleObject undocumented until 2000-2006;
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwWaitHighEventPair  
ZwWaitLowEventPair  
ZwWriteFile declaration requires Windows 2000 and higher
ZwWriteRequestData  
ZwWriteVirtualMemory  
_CIpow x86 only
__eCommonExceptions discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eEmulatorInit discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eF2XM1 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFABS discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFADD32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFADD64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFADDPreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFADDreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFADDtop discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCHS discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOM discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOM32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOM64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOMP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOMP32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOMP64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOMPP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFCOS discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDECSTP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIV32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIV64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVPreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVR32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVR64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVRPreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVRreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVRtop discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFDIVtop discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFFREE discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIADD16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIADD32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFICOM16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFICOM32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFICOMP16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFICOMP32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIDIV16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIDIV32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIDIVR16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIDIVR32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFILD16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFILD32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFILD64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIMUL16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIMUL32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFINCSTP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFINIT discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIST16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFIST32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISTP16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISTP32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISTP64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISUB16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISUB32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISUBR16 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFISUBR32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLD1 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLD32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLD64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLD80 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLDCW discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLDENV discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLDL2E discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLDLN2 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLDPI discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFLDZ discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFMUL32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFMUL64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFMULPreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFMULreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFMULtop discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFPATAN discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFPREM discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFPREM1 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFPTAN discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFRNDINT discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFRSTOR discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSAVE discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSCALE discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSIN discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSQRT discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFST discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFST32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFST64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTCW discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTENV discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTP32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTP64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTP80 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSTSW discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUB32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUB64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBPreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBR32 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBR64 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBRPreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBRreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBRtop discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBreg discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFSUBtop discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFTST discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFUCOM discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFUCOMP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFUCOMPP discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFXAM discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFXCH discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFXTRACT discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFYL2X discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eFYL2XP1 discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
__eGetStatusWord discontinued in 5.1 from Windows XP SP2;
discontinued in 5.2 from Windows Server 2003 SP1
_alloca_probe x86 only
_chkstk x86 only;
undocumented until 2001-2002
_fltused  
_ftol x86 only
_itoa  
_ltoa  
_memccpy  
_memicmp  
_snprintf  
_snwprintf  
_splitpath  
_strcmpi  
_stricmp  
_strlwr  
_strnicmp  
_strupr  
_ultoa  
_vsnprintf  
_wcsicmp  
_wcslwr  
_wcsnicmp  
_wcsupr  
abs  
atan  
atoi  
atol  
ceil  
cos  
fabs  
floor  
isalpha  
isdigit  
islower  
isprint  
isspace  
isupper  
iswalpha  
iswctype  
isxdigit  
labs  
log  
mbstowcs  
memchr  
memcmp  
memcpy  
memmove  
memset  
pow  
qsort  
sin  
sprintf  
sqrt  
sscanf  
strcat  
strchr  
strcmp  
strcpy  
strcspn  
strlen  
strncat  
strncmp  
strncpy  
strpbrk  
strrchr  
strspn  
strstr  
swprintf  
tan  
tolower  
toupper  
towlower  
towupper  
vsprintf  
wcscat  
wcschr  
wcscmp  
wcscpy  
wcscspn  
wcslen  
wcsncat  
wcsncmp  
wcsncpy  
wcspbrk  
wcsrchr  
wcsspn  
wcsstr  
wcstok discontinued in 4.0
wcstol  
wcstombs  
wcstoul