"Dimitrie O. Paun" dpaun@rogers.com writes:
This DLL stuff is a bit confusing. In dlls/user/user32.spec we have
409 pascal16 InitThreadInput(word word) InitThreadInput16
so the exported name is InitThreadInput, right?
No, that line is not in user32.spec, it's in user.exe.spec which is the 16-bit one. 16-bit functions cannot be imported from other dlls since this would require calling down to 16-bit which we want to avoid. So that InitThreadInput export is only available for 16-bit binaries, not for Winelib dlls.
Then how come in ./dlls/x11drv/desktop.c we call it like so:
win->hmemTaskQ = InitThreadInput16( 0, 0 );
Shouldn't this yield an error?
It should, but to work around it we have added an InitThreadInput16 export in user32.spec; this time it's a normal 32-bit export so it can be used from other dlls. This is really a hack because Windows doesn't do it like this of course.