SHELL32 1.30 and 3.51 Named Exports

These original SHELL32 exports date from Win32s and Windows NT 3.51. At least some seem likely to date from even earlier, i.e., from 16-bit Windows. Some seem to be undocumented, plausibly because they were already superseded.

Of those that are documented, many are said to require “version 4.0 or later” or to have “Windows 95, Windows NT 4.0” as the minimum operating systems. Some have their prehistory acknowledged, if only by oblique talk of such creatures as “Windows NT 3.1”. It’s all so long ago, and the table below lets it pass without comment. By contrast, a handful of these ancient functions are said to require more recent versions, and in one case even a very recent version.

Many of the names exported from these early SHELL32 versions develop differently in the Windows and NT implementations of later versions. Those that do not appear in any Windows implementation of any later SHELL32 version are distinguished by the remark “NT only”. Others were not taken up for the first Windows implementation, i.e., for the original Windows 95, but are exported from all SHELL32 versions after 4.00, in both the Windows and NT implementations. These are marked “NT-only in version 4.0”.

The differences that develop between the Windows and NT implementations can be explained almost entirely on two points. First, note that for a function that works with strings, there may be as many as two codings and three names:

The scheme seems to have been still in development for versions 1.30 and 3.51. Some functions have only the base name. Some have all three right from version 1.30, but some of those drop the base name for 3.51 and some don’t. By version 4.0, the Windows implementation typically provides only an ANSI coding and either or both of the ANSI names, but not the Unicode name, not even in a coding that immediately returns an error. The NT implementations almost always have codings for both ANSI and Unicode, and add whichever of the suffixed names were missing.

Second, these early versions have 14 string utility functions, whose names all begin with “Str”. These remain in the NT implementations of all later SHELL32 versions but were never taken up for any Windows implementation. Most, though not all, found their way instead into SHLWAPI, from where they also found their way into Microsoft’s documentation. These are nowadays coded trivially within SHELL32 as jumps to the corresponding function in SHLWAPI.

Function Remarks
CheckEscapesA discontinued in version 6.0 from Windows Vista
CheckEscapesW  
CommandLineToArgvW documented as requiring “version 6.0 or later”
Control_FillCache_RunDLL discontinued in version 6.0 from Windows Vista
Control_RunDLL  
DllGetClassObject  
DoEnvironmentSubstA  
DoEnvironmentSubstW  
DragAcceptFiles  
DragFinish  
DragQueryFile  
DragQueryFileA  
DragQueryFileW  
DragQueryFileAorW  
DragQueryPoint  
DuplicateIcon  
ExtractAssociatedIconA  
ExtractAssociatedIconW  
ExtractAssociatedIconExA documented as requiring “version 5.0 or later”
ExtractAssociatedIconExW documented as requiring “version 5.0 or later”
ExtractIcon discontinued in version 3.51
ExtractIconA  
ExtractIconW  
ExtractIconEx  
ExtractIconExA  
ExtractIconExW NT-only in version 4.0
ExtractIconResInfoA discontinued in version 6.0 from Windows Vista
ExtractIconResInfoW discontinued in version 6.0 from Windows Vista
ExtractVersionResource16W discontinued in version 6.0 from Windows Vista
FindExecutable discontinued in version 3.51
FindExecutableA  
FindExecutableW  
FindExeDlgProc NT-only in version 4.0;
discontinued in version 6.0 from Windows Vista
FreeIconList  
InternalExtractIconListA  
InternalExtractIconListW  
OpenAs_RunDLL  
PrintersGetCommand_RunDLL  
RealShellExecuteA  
RealShellExecuteW  
RealShellExecuteExA  
RealShellExecuteExW  
RegenerateUserEnvironment  
RegisterShellHook exported only by ordinal (181) in version 4.0 and higher
SHAddToRecentDocs  
SHAppBarMessage  
SHBrowseForFolder  
SHBrowseForFolderA  
SHBrowseForFolderW NT-only in version 4.0
SHChangeNotify  
SheChangeDirA  
SheChangeDirW discontinued in version 6.0 from Windows Vista
SheChangeDirExA discontinued in version 6.0 from Windows Vista
SheChangeDirExW  
SheConvertPathW discontinued in version 6.0 from Windows Vista
SheFullPathA discontinued in version 6.0 from Windows Vista
SheFullPathW discontinued in version 6.0 from Windows Vista
SheGetCurDrive discontinued in version 6.0 from Windows Vista
SheGetDirA  
SheGetDirW discontinued in version 6.0 from Windows Vista
SheGetDirExW discontinued in version 6.0 from Windows Vista
SheGetPathOffsetW discontinued in version 6.0 from Windows Vista
Shell_NotifyIcon  
Shell_NotifyIconA  
Shell_NotifyIconW NT-only in version 4.0
ShellAbout discontinued in version 3.51
ShellAboutA  
ShellAboutW  
ShellExecute discontinued in version 3.51
ShellExecuteA  
ShellExecuteW  
ShellExecuteEx  
ShellExecuteExA  
ShellExecuteExW NT-only in version 4.0
ShellHookProc NT-only in version 4.0
SheRemoveQuotesA discontinued in version 6.0 from Windows Vista
SheRemoveQuotesW discontinued in version 6.0 from Windows Vista
SheSetCurDrive  
SheShortenPathA discontinued in version 6.0 from Windows Vista
SheShortenPathW discontinued in version 6.0 from Windows Vista
SHFileOperation  
SHFileOperationA  
SHFileOperationW NT-only in version 4.0
SHFormatDrive documented as requiring “version 5.0 or later”
SHFreeNameMappings  
SHGetDesktopFolder  
SHGetFileInfo  
SHGetFileInfoA  
SHGetFileInfoW NT-only in version 4.0
SHGetInstanceExplorer  
SHGetMalloc  
SHGetPathFromIDList  
SHGetPathFromIDListA  
SHGetPathFromIDListW NT-only in version 4.0
SHGetSpecialFolderLocation  
SHHelpShortcuts_RunDLL  
SHLoadInProc  
SHObjectProperties not in version 3.51;
exported only by ordinal (178) in version 4.0 and higher;
until exported also by name in version 6.0 from Windows XP SP1, and higher;
documented as requiring “version 5.0 or later”
StrChrA NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrChrW NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrChrIA NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrChrIW NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrCmpNA NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrCmpNW NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrCmpNIA NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrCmpNIW NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrCpyNA NT only;
discontinued in version 6.0 from Windows Vista
StrCpyNW NT only;
discontinued in version 6.0 from Windows Vista;
documented as requiring “shlwapi.dll version 4.71 or later”
StrNCmpA NT only
StrNCmpW NT only
StrNCmpIA NT only
StrNCmpIW NT only
StrNCpyA NT only;
discontinued in version 6.0 from Windows Vista
StrNCpyW NT only;
discontinued in version 6.0 from Windows Vista
StrRChrA NT only ;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrRChrW NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrRChrIA NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrRChrIW NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrRStrA NT only
StrRStrW NT only
StrRStrIA NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrRStrIW NT only;
redirected to SHLWAPI in version 5.00 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrStrA NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrStrW NT only;
redirected to SHLWAPI in version 4.71 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrStrIA NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
StrStrIW NT only;
redirected to SHLWAPI in version 5.0 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
WIN32SYSDLL discontinued in version 3.51
WOWShellExecute NT only;
documented with “Windows 2000” as minimum operating system