Join The Works program to have access to the most current content, and to be able to ask questions and get answers from Revelation staff and the Revelation community

At 19 MAY 1999 05:01:18PM Ken King wrote:

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/sendmessage

from 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.

At 19 MAY 1999 08:03PM Bil Vernon wrote:

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.


At 21 MAY 1999 03:48PM Ken King wrote:

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..

View this thread on the Works forum...

  • third_party_content/community/commentary/forums_works/7f4bad455123ce948525677600737a04.txt
  • Last modified: 2023/12/30 11:57
  • by 127.0.0.1