COMCTL32 3.50 Ordinal-Only Exports

As far back as Win32s and Windows NT 3.51, a substantial majority of COMCTL32’s exported functions had only ordinals, not names, and were undocumented. Rather many of these functions, most notably the Unicode forms of those that take string input, are not exported by the COMCTL32 from the original Windows 95, but they were restored for Windows NT 4.0 and for Windows 95 OSR2. All continue to be exported from subsequent COMCTL32 versions, though the programme of tidying up for Windows Vista has seen some become retired, meaning that although they are still exported, they no longer have code in COMCTL32 but are instead forwarded to SHUNIMPL.DLL for trivial failure.

For some of the functions listed below, the functionality in COMCTL32 was soon duplicated into the new SHLWAPI.DLL, where it was slightly less soon documented. Even so, COMCTL32 retained its implementations (which are, strictly speaking, undocumented), but they are plainly obsolete and are formally retired in the Windows Vista builds of version 5.82 and 6.10.

No others got documented until late 2002 as Settlement Program Interfaces, which exercise also saw some start being exported by name (with the ordinal preserved). More have been documented since, but no reason from Microsoft is known. Microsoft presents some of these decade-old functions as being new for Windows Vista.

Ordinal Function Remarks
71 Alloc retired in 6.10 and higher
72 ReAlloc retired in 6.10 and higher
73 Free retired in 6.10 and higher
74 GetSize retired in 6.10 and higher
151 CreateMRUListA  
152 FreeMRUList exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented as requiring “version 5.0 or later”
153 AddMRUStringA  
154 EnumMRUListA  
155 FindMRUStringA  
156 DelMRUString  
163 CreatePage retired in 6.10 and higher
164 CreateProxyPage  
167 AddMRUData  
169 FindMRUData  
233 Str_GetPtrA documented with “Windows 2000” as minimum operating system
234 Str_SetPtrA documented with “Windows 2000” as minimum operating system
235 Str_GetPtrW not in version 4.0 (Windows);
documented with “Windows 2000” as minimum operating system
236 Str_SetPtrW not in version 4.0 (Windows);
exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
320 DSA_Create exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
321 DSA_Destroy exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
322 DSA_GetItem exported also by name in 5.82 and 6.10 from Windows Vista, and higher
323 DSA_GetItemPtr exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher
324 DSA_InsertItem exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
325 DSA_SetItem exported also by name in 5.82 and 6.10 from Windows Vista, and higher
326 DSA_DeleteItem exported also by name in 5.82 and 6.10 from Windows Vista, and higher
327 DSA_DeleteAllItems exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows Vista” as minimum operating system
328 DPA_Create exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
329 DPA_Destroy exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
330 DPA_Grow exported also by name in 5.82 and 6.10 from Windows Vista, and higher;
documented with “Windows Vista” as minimum operating system
331 DPA_Clone exported also by name in 5.82 and 6.10 from Windows Vista, and higher
332 DPA_GetPtr exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
333 DPA_GetPtrIndex exported also by name in 5.82 and 6.10 from Windows Vista, and higher
334 DPA_InsertPtr  exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
335 DPA_SetPtr exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
336 DPA_DeletePtr exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
337 DPA_DeleteAllPtrs exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
338 DPA_Sort exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
339 DPA_Search exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented with “Windows 2000” as minimum operating system
340 DPA_CreateEx exported also by name in 5.82 and 6.10 from Windows Vista, and higher
341 SendNotify  
342 SendNotifyEx not in version 4.0 (Windows)
350 StrChrA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
351 StrRChrA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
352 StrCmpNA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
353 StrCmpNIA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
354 StrStrA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
355 StrStrIA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
356 StrCSpnA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
357 StrToIntA retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
358 StrChrW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
359 StrRChrW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
360 StrCmpNW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
361 StrCmpNIW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
362 StrStrW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
363 StrStrIW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
364 StrCSpnW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
365 StrToIntW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
366 StrChrIA not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
367 StrChrIW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
368 StrRChrIA not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
372 StrRStrIA not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
373 StrRStrIW not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
374 StrCSpnIA not in version 4.0 (Windows);
retired in 5.82 and 6.10 from Windows Vista, and higher;
independent implementation exported from SHLWAPI version 4.70 and higher;
documented as requiring “shlwapi.dll version 4.71 or later”
400 CreateMRUListW not in version 4.0 (Windows);
exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented as requiring “version 5.0 or later”
401 AddMRUStringW not in version 4.0 (Windows);
exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented as requiring “version 5.0 or later”
402 FindMRUStringW not in version 4.0 (Windows)
403 EnumMRUListW not in version 4.0 (Windows);
exported also by name in 5.82 and 6.0 from Windows XP SP1, and higher;
documented as requiring “version 5.0 or later”

Functions Also Exported By Name

The following ordinals are assigned reliably in all known COMCTL32 versions 3.50 and higher to functions that are exported by name. The functions are therefore listed primarily as named exports and the list below is just for cross-reference. Inspection confirms that their ordinals persist from a yet earlier version, but in 16-bit code, namely COMMCTRL.DLL from Windows for Workgroups 3.11.

Ordinal Function Versions that Export by Name
2 MenuHelp 3.50 and higher
3 ShowHideMenuCtl 3.50 and higher
4 GetEffectiveClientRect 3.50 and higher
5 DrawStatusText 4.0
DrawStatusTextA 3.50 and higher, except 4.00 
6 CreateStatusWindow 4.0
CreateStatusWindowA 3.50 and higher, except 4.00
7 CreateToolbar 3.50 and higher
8 CreateMappedBitmap 3.50 and higher
13 MakeDragList 3.50 and higher
14 LBItemFromPt 3.50 and higher
15 DrawInsert 3.50 and higher
16 CreateUpDownControl 3.50 and higher
17 InitCommonControls 3.50 and higher