Geoff Chappell - Software Analyst
It is version 5.0 that added the most weight to the SHLWAPI functional interface. However, by far the most are exported only by ordinal (and undocumented).
With only a handful of mostly trivial exceptions, all the named exports that first appeared in SHLWAPI version 5.0 are documented. Moreover, they are all said correctly to require “version 5.0 or later” or similar, except that one is said to be available as early as version 4.71.
Among the exceptions regarding documentation status, SHCreateStreamOnFileAOld and SHCreateStreamOnFileWOld (counted as one distinct function) are just aliases for SHCreateStreamOnFileA and SHCreateStreamOnFileW respectively, and anyway cease to exist in later builds of SHLWAPI version 5.0. The function _SHGetInstanceExplorer@4 also disappears in later builds. The function named SHCreateStreamWrapper is in these later builds implemented to fail trivially.
The function SHRegisterValidateTemplate, introduced with later builds of SHLWAPI version 5.0, appears to be genuinely undocumented.
|PathUnExpandEnvStringsA||begins in Windows 2000|
|PathUnExpandEnvStringsW||begins in Windows 2000|
|SHCreateStreamOnFileAOld||discontinued in Windows 2000|
|SHCreateStreamOnFileWOld||discontinued in Windows 2000|
|SHCreateStreamWrapper||retired in 6.1 and higher|
|SHRegGetPathA||begins in Windows 2000|
|SHRegGetPathW||begins in Windows 2000|
|SHRegisterValidateTemplate||begins in Windows 2000|
|SHRegSetPathA||begins in Windows 2000|
|SHRegSetPathW||begins in Windows 2000|
|SHSkipJunction||documented as requiring “version 4.71 or later”|
|_SHGetInstanceExplorer@4||before Windows 2000 only|
It is typical practice by Microsoft, at least for functions in the Windows Shell, to leave undocumented functions unnamed as exports. Version 5.0 presents the first example of a SHLWAPI function that had been undocumented (e.g., in the January 1999 edition of the MSDN Library on CD) and exported only by ordinal, but which Microsoft decided to document. The function then becomes exported by name, while retaining its ordinal.