Eric Pouech eric.pouech@wanadoo.fr writes:
2/ from 32 bit code, call a wrapper for the 16 bit call, with an extra parameter compared to the standard ioProc (the segmented address of callback). It's what is done in user32/ddeml. However, to let the 16 bit DLL to be splitted, the wrapper function must called thru a pointer (the 16 bit library would initialize this pointer if it's loaded, as you suggested before).
sorry for making this discussion so long, but I'd prefer there's an agreement and a clear scheme defined so that it can be safely applied across all DLLs. There are lots of ways for doing it, but it's better we select a few of them. It'll be easier to maintain.
Definitely. I think the SetAbortProc method is the easiest so we should use that where possible; but clearly there are cases like mmio where it's not enough. In these cases I'd suggest your method 2/, it's cleaner than generating code on the fly or adding private information in Windows structures.