Some ordinals of new functions overlay ordinals of old functions (most notably ordinal 4 that now offers a function that did not exist before).
I can only say that I had to relink cameraderie with an updated import libary for usbcalls.dll.
To make it more clear, there the library from:
http://en.ecomstation.ru/projects/usbtools/download/usbcalls-20060807.zipLibrary: usbcalls
Description: USB Interface DLL - (c) Froloff&Son 2006
Module type: Dynamic link library
Per-process initialization
Per-process termination
Number of memory pages: 00000002 (2)
Initial CS:EIP: object 1 offset 00000000
Initial SS:ESP: object 0 offset 00000000
Automatic data object: 2
And "exehdr usbcalls.dll | find " 4"" results in:
4 1 000011e6 UsbIsoStart exported, shared data
For the latest usbcalls.dll (in this case my build, but David's is exactly the same):
Library: USBCALLS
Description: @#Lars Erdmann:10.211#@##1## 14 Nov 2016 22:30:23 Laptop ::::::@@USBCALLS DLL for OS/2 (c) 2015 Lars Erdmann
Module type: Dynamic link library
Per-process initialization
Per-process termination
NO internal fixups in executable image
Number of memory pages: 00000008 (8)
Initial CS:EIP: object 1 offset 00003876
Initial SS:ESP: object 0 offset 00000000
Automatic data object: 2
And "exehdr usbcalls.dll | find " 4"" results in:
4 1 0000101e UsbQueryDeviceInfo exported
where "UsbQueryDeviceInfo" is a function that is completely new and never existed in the old DLL.
To crosscheck with Wim's DLL:
Library: USBCALLS
Description: @#W.M.Brul:14.20150630#@USBCALLS
Module type: Dynamic link library
Per-process initialization
Per-process termination
Number of memory pages: 0000000c (12)
Initial CS:EIP: object 1 offset 00000000
Initial SS:ESP: object 0 offset 00000000
Automatic data object: 2
and "exehdr.exe usbcalls.dll | find " 4" results in:
4 1 000025e2 UsbQueryDeviceInfo exported
I can say that David's, Wim's and my version of USBCALLS.DLL are exactly the same from a binary interface point of view (and also otherwise).
In short: sticking to one and the same ordinal of "4" for two different functions broke the binary compatibility between the DLL from Froloff (2006) and the new version.
Lars