Geoff Chappell - Software Analyst
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 |