The compiler ensures that no parameters or automatic
variables of a function calling 16-bit code cross a 64K
boundary. Any parameters or automatic variables of
functions that do not call 16-bit code may cross 64K
boundaries. Passing the address of the parameters or
automatic variables to functions that pass them on to
16-bit code will result in an unreliable program.
To
solve this problem, copy the value passed into an
automatic variable in the function that calls the 16-bit
code. This automatic variable will not cross a 64K
boundary.
Memory returned by _alloca will not
be tiled. If a function contains a call to _alloca, it
should not also call 16-bit code, because parameters and
automatic variables may then cross 64K boundaries.
A 16-bit program cannot pass structures by value to a
32-bit callback function. The callback function cannot
return structures by value to the 16-bit program that
called it.
The parameter area of the callback function cannot be
larger than 120 bytes.
Callback functions that take a variable number of
arguments are not supported.
Calling 16-bit code that takes a variable number of
arguments is not supported.
You cannot call 16-bit code from a 32-bit function that
uses variable arguments.
If an OS/2 exception handler must process an OS/2 guard
page or an out-of-stack exception, calling a 16-bit
function from within the exception handler may cause a
recursive stack exception.