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