While checking the differences between the set of APIs exported by Windows dlls and the set of APIs exported by Wine's libraries I found some strange cases:
* some APIs are exported on Windows 95 and/or NT4 but are not exported in more recent versions of Windows. For instance, GetRunTimes is exported by urlmon on Windows 95 and NT4, but there is no trace of it in Windows 98, Millenium, 2000 or XP. There is also no trace of it in the SDK headers. Some are exported only by NT4. What should I do with such APIs? Should I add them to Wine's spec files anyway?
* Some APIs are exported at a specific ordinal in Windows 95, but are exported 'normally' in more recent versions of Windows. For instance, still in urlmon, on Windows 95 and NT4 I have:
api95/urlmon-api.txt: 4 2D 00047D0B IsLoggingEnabledW apint4/urlmon-api.txt: 4 2D 00047E4A IsLoggingEnabledW
Clearly the ordinal was manually specified since the ordinal of IsLoggingEnabledA is 46. However in the XP library these are exported in the usual alphabetical order:
49 30 000439E9 IsLoggingEnabledA 50 31 00043AC6 IsLoggingEnabledW
Wine sides on XP for this one. Should we not care (after all Microsoft doesn't), or should we try to match the Windows 95 ordinal? I would vote for the second otherwise scripts diffing the export lists will complain about the difference every time we run them.
Francois Gouget fgouget@free.fr writes:
For instance, GetRunTimes is exported by urlmon on Windows 95 and NT4, but there is no trace of it in Windows 98, Millenium, 2000 or XP. There is also no trace of it in the SDK headers. Some are exported only by NT4. What should I do with such APIs? Should I add them to Wine's spec files anyway?
No need, unless we find an app that needs them.
Wine sides on XP for this one. Should we not care (after all Microsoft doesn't), or should we try to match the Windows 95 ordinal? I would vote for the second otherwise scripts diffing the export lists will complain about the difference every time we run them.
We shouldn't care. Ordinals should be specified only where strictly necessary. If the ordinals differ between Windows versions then the script shouldn't check them.