SHELL32 6.0 Named Exports

Of the 11 new functions that are exported by name in the first build of SHELL32 version 6.0, the two that name calling points for a RUNDLL32 command line are not documented (and not expected to be), but all the rest at least have been. Though the SHEnableServiceObject function is not documented in the Windows Vista Software Development Kit (SDK) dated January 2007, it was documented in what this study had originally taken as its reference, namely the January 2004 Edition of the MSDN Library on CD. The declaration in SHLOBJ.H from contemporaneous SDK releases has been removed for this same header in the Vista SDK. The function has evidently been withdrawn (from the documentation, not the software).

Of the 47 named exports that were newly added for Windows Vista, two are not documented in the Windows Vista SDK from January 2007, and are marked as such below. One of these, namely SHGetFolderPathEx, is perhaps semi-documented: two pages of the Programming Guide for Windows Vista Game Explorer (in the DirectX SDK dated April 2006) speak of using it, admittedly with a caution that the documentation is “preliminary and is subject to change”.

Function Remarks
Activate_RunDLL discontinued in Windows Vista
AppCompat_RunDLLW  
AssocCreateForClasses begins in Windows Vista
AssocGetDetailsOfPropKey begins in Windows Vista
ILLoadFromStreamEx begins in Windows Vista
InitNetworkAddressControl begins in Windows Vista
PrepareDiscForBurnRunDllW begins in Windows Vista
SHAddDefaultPropertiesByExt begins in Windows Vista
SHAssocEnumHandlers begins in Windows Vista
SHBindToFolderIDListParent begins in Windows Vista
SHBindToFolderIDListParentEx begins in Windows Vista
SHBindToObject begins in Windows Vista
SHChangeNotifyRegisterThread begins in Windows Vista
SHCreateAssociationRegistration begins in Windows Vista
SHCreateDataObject begins in Windows Vista
SHCreateDefaultContextMenu begins in Windows Vista
SHCreateDefaultExtractIcon begins in Windows Vista
SHCreateDefaultPropertiesOp begins in Windows Vista
SHCreateItemFromIDList begins in Windows Vista
SHCreateItemFromParsingName begins in Windows Vista
SHCreateItemFromRelativeName begins in Windows Vista
SHCreateItemInKnownFolder begins in Windows Vista
SHCreateItemWithParent begins in Windows Vista
SHCreateQueryCancelAutoPlayMoniker  
SHCreateShellItem documented with “Windows 2000” as minimum operating system
SHCreateShellItemArray begins in Windows Vista
SHCreateShellItemArrayFromDataObject begins in Windows Vista
SHCreateShellItemArrayFromIDLists begins in Windows Vista
SHCreateShellItemArrayFromShellItem begins in Windows Vista
Shell_GetCachedImageIndexA begins in Windows Vista
Shell_GetCachedImageIndexW begins in Windows Vista
SHEnableServiceObject  
SHEnumerateUnreadMailAccountsW  
SHEvaluateSystemCommandTemplate begins in Windows Vista
SHGetDriveMedia begins in Windows Vista
SHGetFolderPathAndSubDirA documented as requiring “version 5.60 or later”
SHGetFolderPathAndSubDirW documented as requiring “version 5.60 or later”
SHGetFolderPathEx begins in Windows Vista
SHGetIDListFromObject begins in Windows Vista
SHGetKnownFolderIDList begins in Windows Vista
SHGetKnownFolderPath begins in Windows Vista
SHGetLocalizedName begins in Windows Vista
SHGetNameFromIDList begins in Windows Vista
SHGetPathFromIDListEx begins in Windows Vista
SHGetPropertyStoreFromIDList begins in Windows Vista
SHGetPropertyStoreFromParsingName begins in Windows Vista
SHGetStockIconInfo begins in Windows Vista
SHGetTemporaryPropertyForItem begins in Windows Vista
SHGetUnreadMailCountW  
SHOpenWithDialog begins in Windows Vista
SHParseDisplayName  
SHQueryUserNotificationState begins in Windows Vista
SHRemoveLocalizedName begins in Windows Vista
SHSetDefaultProperties begins in Windows Vista
SHSetKnownFolderPath begins in Windows Vista
SHSetLocalizedName documented as requiring “version 5.6 or later”
SHSetTemporaryPropertyForItem begins in Windows Vista
SHSetUnreadMailCountW documented as requiring “version 5.60 or later”
WaitForExplorerRestartW begins in Windows Vista

Functions Previously Exported Only by Ordinal

Starting from Windows XP SP1, SHELL32 exports by name 111 distinct functions that were previously exported only by ordinal. One more function, SHGetImageList, becomes exported also by name starting with Windows XP SP2. Nine functions are retired (as forwards to SHUNIMPL.DLL) in Windows Vista and higher, and therefore revert to being exported only by ordinal.

Almost all these functions were documented contemporaneously as Settlement Program Interfaces. Of these, most are said to require “version 5.0 or later” even though the vast majority predate version 5.0 by several years. In the table below, the phrase “4.0 (NT)” means specifically that a function dates from SHELL32 version 4.0 but only in the NT releases, i.e., in NT 4.0 but not in Windows 95.

A generous interpretation is that the settlement does not require Microsoft to document functions that were used by Middleware only before Windows 2000 and that Microsoft has therefore not troubled to investigate whether functions used by Middleware in Windows 2000 and higher have any earlier availability. Yet even this does not explain how it can be that among the functions that are said to require “version 6.0 or later” there are six that date from the original Windows 95, two from Internet Explorer 4.0 and three from Windows 2000. For one of the functions that actually date from Windows 95, we are told that the minimum operating system is not just Windows XP but specifically Service Pack 1. Conversely, four functions that are not exported until version 6.0 are documented as being available in “version 5.0 or later”. The mill at Microsoft grinds not just slowly, but coarsely.

Function Ordinal First Availability Versions that Export By Name
CDefFolderMenu_Create 700 4.71 6.0 from Windows XP SP1, and higher
CDefFolderMenu_Create2 701 4.71 6.0 from Windows XP SP1, and higher
CallCPLEntry16 166 4.0 6.0 from Windows XP SP1 before Windows Vista
DAD_AutoScroll 129 4.0 6.0 from Windows XP SP1, and higher
DAD_DragEnterEx 131 4.0 6.0 from Windows XP SP1, and higher
DAD_DragEnterEx2 22 5.0 6.0 from Windows XP SP1, and higher
DAD_DragLeave 132 4.0 6.0 from Windows XP SP1, and higher
DAD_DragMove 134 4.0 6.0 from Windows XP SP1, and higher
DAD_SetDragImage 136 4.0 6.0 from Windows XP SP1, and higher
DAD_ShowDragImage 137 4.0 6.0 from Windows XP SP1, and higher
DriveType 64 4.0 6.0 from Windows XP SP1, and higher
GetFileNameFromBrowse 63 4.0 6.0 from Windows XP SP1, and higher
ILAppendID 154 4.0 6.0 from Windows XP SP1, and higher
ILClone 18 4.0 6.0 from Windows XP SP1, and higher
ILCloneFirst 19 4.0 6.0 from Windows XP SP1, and higher
ILCombine 25 4.0 6.0 from Windows XP SP1, and higher
ILCreateFromPath 157 4.0 6.0 from Windows XP SP1, and higher
ILCreateFromPathA 189 4.71 6.0 from Windows XP SP1, and higher
ILCreateFromPathW 190 4.71 6.0 from Windows XP SP1, and higher
ILFindChild 24 4.0 6.0 from Windows XP SP1, and higher
ILFindLastID 16 4.0 6.0 from Windows XP SP1, and higher
ILFree 155 4.0 6.0 from Windows XP SP1, and higher
ILGetNext 153 4.0 6.0 from Windows XP SP1, and higher
ILGetSize 152 4.0 6.0 from Windows XP SP1, and higher
ILIsEqual 21 4.0 6.0 from Windows XP SP1, and higher
ILIsParent 23 4.0 6.0 from Windows XP SP1, and higher
ILLoadFromStream 26 4.0 6.0 from Windows XP SP1 before Windows Vista
ILRemoveLastID 17 4.0 6.0 from Windows XP SP1, and higher
ILSaveToStream 27 4.0 6.0 from Windows XP SP1, and higher
IsLFNDrive 119 4.0 6.0 from Windows XP SP1, and higher
IsLFNDriveA 41 4.71 6.0 from Windows XP SP1, and higher
IsLFNDriveW 42 4.71 6.0 from Windows XP SP1, and higher
IsNetDrive 66 4.0 6.0 from Windows XP SP1, and higher
IsUserAnAdmin 680 4.0 (NT) 6.0 from Windows XP SP1, and higher
OpenRegStream 85 4.0 6.0 from Windows XP SP1, and higher
PathCleanupSpec 171 4.0 6.0 from Windows XP SP1, and higher
PathGetShortPath 92 4.0 6.0 from Windows XP SP1, and higher
PathIsExe 43 4.0 6.0 from Windows XP SP1, and higher
PathIsSlowA 240 5.0 6.0 from Windows XP SP1, and higher
PathIsSlowW 239 5.0 6.0 from Windows XP SP1, and higher
PathMakeUniqueName 47 4.0 6.0 from Windows XP SP1, and higher
PathProcessCommand 653 4.0 (NT) 6.0 from Windows XP SP1 before Windows Vista
PathQualify 49 4.0 6.0 from Windows XP SP1, and higher
PathResolve 51 4.0 6.0 from Windows XP SP1, and higher
PathYetAnotherMakeUniqueName 75 4.0 6.0 from Windows XP SP1, and higher
PickIconDlg 62 4.0 6.0 from Windows XP SP1, and higher
PifMgr_CloseProperties 13 4.0 6.0 from Windows XP SP1, and higher
PifMgr_GetProperties 10 4.0 6.0 from Windows XP SP1, and higher
PifMgr_OpenProperties 9 4.0 6.0 from Windows XP SP1, and higher
PifMgr_SetProperties 11 4.0 6.0 from Windows XP SP1, and higher
ReadCabinetState 654 4.71 (see note) 6.0 from Windows XP SP1, and higher
RealDriveType 524 4.0 (NT) 6.0 from Windows XP SP1, and higher
RestartDialog 59 4.0 6.0 from Windows XP SP1, and higher
RestartDialogEx 730 6.0 6.0 from Windows XP SP1, and higher
SHAddFromPropSheetExtArray 167 4.0 6.0 from Windows XP SP1, and higher
SHAlloc 196 4.0 6.0 from Windows XP SP1, and higher
SHAllocShared 520 4.0 (NT) 6.0 from Windows XP SP1 before Windows Vista
SHCLSIDFromString 147 4.0 6.0 from Windows XP SP1, and higher
SHChangeNotification_Lock 644 4.0 (NT) 6.0 from Windows XP SP1, and higher
SHChangeNotification_Unlock 645 4.0 (NT) 6.0 from Windows XP SP1, and higher
SHChangeNotifyDeregister 4 4.0 6.0 from Windows XP SP1, and higher
SHChangeNotifyRegister 2 4.0 6.0 from Windows XP SP1, and higher
SHCloneSpecialIDList 89 4.0 6.0 from Windows XP SP1, and higher
SHCoCreateInstance 102 4.0 6.0 from Windows XP SP1, and higher
SHCreateDirectory 165 4.0 6.0 from Windows XP SP1, and higher
SHCreateFileExtractIconW 743 6.0 6.0 from Windows XP SP1, and higher
SHCreatePropSheetExtArray 168 4.0 6.0 from Windows XP SP1, and higher
SHCreateShellFolderView 256 4.71 6.0 from Windows XP SP1, and higher
SHCreateShellFolderViewEx 174 4.0 6.0 from Windows XP SP1, and higher
SHCreateStdEnumFmtEtc 74 4.0 6.0 from Windows XP SP1, and higher
SHDefExtractIconA 3 4.71 6.0 from Windows XP SP1, and higher
SHDefExtractIconW 6 4.71 6.0 from Windows XP SP1, and higher
SHDestroyPropSheetExtArray 169 4.0 6.0 from Windows XP SP1, and higher
SHDoDragDrop 88 4.0 6.0 from Windows XP SP1, and higher
SHFindFiles 90 4.0 6.0 from Windows XP SP1, and higher
SHFind_InitMenuPopup 149 4.0 6.0 from Windows XP SP1, and higher
SHFlushClipboard 121 4.0 6.0 from Windows XP SP1 before Windows Vista
SHFlushSFCache 526 4.71 6.0 from Windows XP SP1, and higher
SHFree 195 4.0 6.0 from Windows XP SP1, and higher
SHFreeShared 523 4.0 (NT) 6.0 from Windows XP SP1 before Windows Vista
SHGetAttributesFromDataObject 750 6.0 6.0 from Windows XP SP1, and higher
SHGetImageList 727 6.0 6.0 from Windows XP SP2, and higher
SHGetRealIDL 98 4.0 6.0 from Windows XP SP1, and higher
SHGetSetFolderCustomSettingsW 709 5.0 6.0 from Windows XP SP1, and higher
SHGetSetSettings 68 4.0 6.0 from Windows XP SP1, and higher
SHGetShellStyleHInstance 749 6.0 6.0 from Windows XP SP1 before Windows Vista
SHHandleUpdateImage 193 4.71 6.0 from Windows XP SP1, and higher
SHILCreateFromPath 28 4.0 6.0 from Windows XP SP1, and higher
SHLimitInputEdit 747 6.0 6.0 from Windows XP SP1, and higher
SHLoadOLE 151 4.0 6.0 from Windows XP SP1, and higher
SHLockShared 521 4.0 (NT) 6.0 from Windows XP SP1, and higher
SHMapIDListToImageListIndexAsync 148 6.0 6.0 from Windows XP SP1, and higher
SHMapPIDLToSystemImageListIndex 77 4.0 6.0 from Windows XP SP1, and higher
SHMultiFileProperties 716 5.0 6.0 from Windows XP SP1, and higher
SHObjectProperties 178 4.0 6.0 from Windows XP SP1, and higher
SHOpenPropSheetW 80 4.71 6.0 from Windows XP SP1, and higher
SHPropStgCreate 685 5.0 6.0 from Windows XP SP1, and higher
SHPropStgReadMultiple 688 5.0 6.0 from Windows XP SP1, and higher
SHPropStgWriteMultiple 689 5.0 6.0 from Windows XP SP1, and higher
SHReplaceFromPropSheetExtArray 170 4.0 6.0 from Windows XP SP1, and higher
SHRestricted 100 4.0 6.0 from Windows XP SP1, and higher
SHRunControlPanel 161 4.0 6.0 from Windows XP SP1 before Windows Vista
SHSetInstanceExplorer 176 4.0 6.0 from Windows XP SP1, and higher
SHShellFolderView_Message 73 4.0 6.0 from Windows XP SP1, and higher
SHSimpleIDListFromPath 162 4.0 6.0 from Windows XP SP1, and higher
SHStartNetConnectionDialogW 14 4.71 6.0 from Windows XP SP1, and higher
SHTestTokenMembership 245 6.0 6.0 from Windows XP SP1, and higher
SHUnlockShared 522 4.0 (NT) 6.0 from Windows XP SP1 before Windows Vista
SHUpdateImageA 191 4.71 6.0 from Windows XP SP1, and higher
SHUpdateImageW 192 4.71 6.0 from Windows XP SP1, and higher
SHValidateUNC 173 4.0 6.0 from Windows XP SP1, and higher
ShellMessageBoxA 183 4.0 6.0 from Windows XP SP1, and higher
ShellMessageBoxW 182 4.0 (NT) 6.0 from Windows XP SP1, and higher
Shell_GetCachedImageIndex 72 4.0 6.0 from Windows XP SP1, and higher
Shell_GetImageLists 71 4.0 6.0 from Windows XP SP1, and higher
Shell_MergeMenus 67 4.0 6.0 from Windows XP SP1, and higher
SignalFileOpen 103 4.0 6.0 from Windows XP SP1, and higher
Win32DeleteFile 164 4.0 6.0 from Windows XP SP1, and higher
WriteCabinetState 652 4.0 (NT) 6.0 from Windows XP SP1, and higher

The function ReadCabinetState arguably dates from the NT implementations of version 4.0. As ordinal 654, it dates only from version 4.71, but a ReadCabinetState existed earlier as ordinal 651 and is now OldReadCabinetState.