We are currently looking for a new way to share information between a 16-bit(OI) and 32-bit program. So far, we have been using command-line arguments, files, and windows messages to exchange data. Due to the changes in the Windows/32bit architecture (which includes a completely different message format), we are currently unable to share data in any way through memory. Speed is becoming an issue in our application and thus disk communication is simply too slow. If anyone has any ideas or information it is greatly appreciated.
Some of the things we ran into:
Compiled 32bit dll's are incompatible with OI.Because of the change in variable type, a postmessage/sendmessagefrom a Win/16 to Win/32 program will send the message, but generate an
error (Probably due to diferences in parameter types between 16/32). So we are limited to only getting message numbers, with no data.
The Win/32 Memory map is flat 32bit pointers, while the Win/16 Memory Map is segment/offset 16bit pointers) -- I have found no compatible conversion functions etc between 16 and 32bit software.
Ken,
To access a 32bit dll from OI you will have to write 16bit thunk dll. Check out this article (Q104009) from Microsoft's knowledge base, which explains the process.
Got the article, wrote the dll's.
Here's whats happening (I realize this may not be an OI problem, but perhaps you (or someone) could shed some light on it.).
I am using MS VC++ 1.5 to write 16-bit DLL's for OI. I am using MS VC++ 5.0 (DevStudio 97) to write 32-bit DLL's. I call the 16 bit .dll from OI, which calls LoadLibraryEx32W() (The Function provided in the kernel for loading 32bit .dll's from 16bit programs). Everytime I call this function the pointer it returns is NULL. I have used the 16bit .dll with OI and its working, I tested the 32bit .dll with another program and it is working. Is there some way OI is interfering with the loading of the 32bit .dll? If anyone has done this procedure I would greatly appreciate some insight. The VC++ 1.5 documentation is very unhelpful once you run into a wall.
Thanks in advance..