Kernel Exports Added For Version 3.50

The table below lists the 156 exports that had been added to the Windows kernel by version 3.50 from Windows NT 3.5 Service Pack 3. For the purpose of this study, with no other build of version 3.50 available for inspection, these exports are taken to have been added for version 3.50. Be aware that they might not date from the original release of version 3.50 or that they might have originated for a service-pack release of version 3.10.

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 (WDK) is highlighted orange. Functions that appear to be completely undocumented are highlighted yellow. If a function is documented now but is known not to have been documented in the first contemporaneous Device Driver Kit (DDK), WDK or Installable File System (IFS), then it is shaded yellow to retain some of its previous status as undocumented.

Function Remarks
CcGetLsnForFileObject  
ExAcquireFastMutexUnsafe declaration requires Windows 2000 and higher
ExAcquireResourceExclusiveLite documentation since 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
ExAcquireResourceSharedLite declaration requires Windows 2000 and higher
ExAcquireSharedWaitForExclusive declaration requires Windows 2000 and higher
ExAllocatePoolWithQuotaTag declaration requires Windows 2000 and higher
ExAllocatePoolWithTag declaration requires Windows 2000 and higher
ExConvertExclusiveToSharedLite declaration requires Windows 2000 and higher
ExDeleteResourceLite declaration requires Windows 2000 and higher
ExDisableResourceBoostLite undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
ExGetExclusiveWaiterCount declaration requires Windows 2000 and higher
ExGetSharedWaiterCount declaration requires Windows 2000 and higher
ExInitializeResourceLite declaration requires Windows 2000 and higher
ExInterlockedAddLargeStatistic x86 only;
undocumented until 1996-2000;
redefined by macro using compiler intrinsic _InterlockedAddLargeStatistic;
supported for x64 by macro using compiler intrinsic _InterlockedAdd64
ExInterlockedExtendZone documented since 1996-2000 as obsolete;
declaration (deprecated) requires Windows 2000 and higher
ExIsResourceAcquiredExclusiveLite declaration requires Windows 2000 and higher
ExIsResourceAcquiredSharedLite declaration requires Windows 2000 and higher
ExReleaseFastMutexUnsafe declaration requires Windows 2000 and higher
ExReleaseResourceForThreadLite declaration requires Windows 2000 and higher
ExReleaseResourceLite undocumented until 1996-2000;
declaration requires Windows 2000 and higher
ExfInterlockedAddUlong x86 only;
declaration (as ExInterlockedAddUlong via macro) requires Windows 2000 and higher
ExfInterlockedInsertHeadList x86 only;
declaration (as ExInterlockedInsertHeadList via macro) requires Windows 2000 and higher
ExfInterlockedInsertTailList x86 only;
declaration (as ExInterlockedInsertTailList via macro) requires Windows 2000 and higher
ExfInterlockedPopEntryList x86 only;
undocumented until 2006-2007;
declaration (as ExInterlockedPopEntryList via macro) requires Windows 2000 and higher
ExfInterlockedPushEntryList x86 only;
undocumented until 2006-2007;
declaration (as ExInterlockedPushEntryList via macro) requires Windows 2000 and higher
ExfInterlockedRemoveHeadList x86 only;
declaration (as ExInterlockedRemoveHeadList via macro) requires Windows 2000 and higher
Exfi386InterlockedDecrementLong x86 only
Exfi386InterlockedExchangeUlong x86 only
Exfi386InterlockedIncrementLong x86 only
FsRtlAllocatePoolWithQuotaTag undocumented until 2000 (IFS);
redefined by macro using ExAllocatePoolWithQuotaTag
FsRtlAllocatePoolWithTag undocumented until 2000 (IFS);
redefined by macro using ExAllocatePoolWithTag
FsRtlNotifyFullChangeDirectory undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
FsRtlNotifyFullReportChange undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
FsRtlNotifyInitializeSync undocumented until 2000 (IFS);
documentation since 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
FsRtlNotifyUninitializeSync undocumented until 2000 (IFS);
documentation since 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
FsRtlSplitLargeMcb undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
FsRtlTruncateLargeMcb undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
FsRtlTruncateMcb undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
IoAssignResources not documented as obsolete until 1996-2000;
declaration (deprecated) requires Windows 2000 and higher
IoEnqueueIrp  
IoGetDeviceToVerify declaration requires Windows 2000 and higher
IoGetFileObjectGenericMapping declaration requires Windows 2000 and higher
IoGetInitialStack declaration requires Windows 2000 and higher
IoGetRequestorProcess undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
IoGetTopLevelIrp undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
IoIsSystemThread undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
IoPageRead undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
IoSetDeviceToVerify undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
IoSetTopLevelIrp undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
IoSynchronousPageWrite undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
IoThreadToProcess undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
IofCallDriver declaration requires Windows 2000 and higher
IofCompleteRequest declaration requires Windows 2000 and higher
KeClearEvent  
KeDeregisterBugCheckCallback declaration requires Windows 2000 and higher
KeEnterCriticalRegion declaration requires Windows 2000 and higher
KeFindConfigurationNextEntry  
KeInitializeQueue undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
KeInsertQueue undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
KeLoaderBlock (data)  
KeReadStateMutant undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
KeReadStateQueue undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
KeRegisterBugCheckCallback declaration requires Windows 2000 and higher
KeRemoveQueue undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
KeSetEventBoostPriority  
KeTickCount (data) x86 only
KefAcquireSpinLockAtDpcLevel x86 only;
declaration requires Windows 2000 and higher
KefReleaseSpinLockFromDpcLevel x86 only;
declaration requires Windows 2000 and higher
MmCanFileBeTruncated undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
MmDisableModifiedWriteOfSection  
MmIsRecursiveIoFault undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
MmIsThisAnNtAsSystem documented since 2002-2005 as obsolete for Windows XP and higher;
declaration requires Windows 2000 and higher
MmLockPagableImageSection  
MmMapMemoryDumpMdl  
MmUnlockPagableImageSection declaration requires Windows 2000 and higher
NlsMbOemCodePageTag (data) declared via NLS_MB_OEM_CODE_PAGE_TAG macro
NlsOemLeadByteInfo (data) declared via NLS_OEM_LEAD_BYTE_INFO macro
NtDeleteFile undocumented until 2008-2009;
documentation requires Windows XP and higher;
not declared
NtOpenProcess undocumented until 2008-2009;
mentioned since 2007 in documentation of ZwOpenProcess
NtQueryInformationProcess  
ObGetObjectPointerCount discontinued in 5.1
ObMakeTemporaryObject undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
ObfDereferenceObject declaration requires Windows 2000 and higher
PsGetProcessExitTime undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
PsIsThreadTerminating undocumented until 2000 (IFS);
documentation since 2008-2009 requires Windows 2000 and higher;
declaration requires Windows 2000 and higher
PsLookupProcessThreadByCid  
PsSetCreateProcessNotifyRoutine undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlCompressBuffer undocumented until 2000-2006 (IFS);
documented until 2007 as reserved;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlDecompressBuffer undocumented until 2000-2006 (IFS);
documented until 2007 as reserved;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlDecompressFragment undocumented until 2000-2006 (IFS);
documented until 2007 as reserved;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlDowncaseUnicodeString undocumented until 2000 (IFS);
declaration requires Windows 2000 and higher
RtlGetCompressionWorkSpaceSize undocumented until 2000-2006 (IFS);
documented until 2007 as reserved;
documentation since 2007 requires Windows XP and higher;
declaration requires Windows XP and higher
RtlxAnsiStringToUnicodeSize undocumented until 2005-2006;
declaration requires Windows 2000 and higher
RtlxOemStringToUnicodeSize undocumented until 2007
RtlxUnicodeStringToAnsiSize undocumented until 1996-2000;
declaration requires Windows 2000 and higher
RtlxUnicodeStringToOemSize undocumented until 2007
SeValidSecurityDescriptor undocumented until 1996-2000;
declaration requires Windows 2000 and higher
ZwConnectPort  
ZwCreateEvent undocumented until 2000-2006 (IFS);
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwDeleteFile undocumented until 2000-2006 (IFS);
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwFlushInstructionCache  
ZwFsControlFile undocumented until 2000-2006 (IFS);
declaration requires Windows 2000 and higher
ZwOpenEvent undocumented until 2005-2006;
documentation requires Windows Server 2003 and higher;
declaration requires Windows Server 2003 and higher
ZwQueryDirectoryFile undocumented until 2000 (IFS);
documentation since 2000-2006 requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwQuerySection  
ZwRequestWaitReplyPort  
ZwSetEvent undocumented until 2000-2006 (IFS);
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
ZwSetInformationFile declaration requires Windows 2000 and higher
ZwSetInformationThread declaration requires Windows 2000 and higher
ZwWaitForSingleObject undocumented until 2000-2006 (IFS);
documentation requires Windows XP and higher;
declaration requires Windows 2000 and higher
_abnormal_termination x86 only
_global_unwind2 x86 only
_purecall  
_snprintf  
_snwprintf  
_strlwr  
_strupr  
_wcsicmp  
atoi  
atol  
isdigit  
islower  
isprint  
isspace  
isupper  
isxdigit  
mbstowcs  
memchr  
memcpy redefined by macro as inline function if _DBG_MEMCPY_INLINE_ defined
memmove  
memset  
qsort  
rand  
srand  
strchr  
strncmp  
strrchr  
swprintf  
tolower  
toupper  
vsprintf  
wcscat  
wcscmp  
wcsncmp  
wcsncpy  
wcsrchr