Platform SDK: Win32 API

Globally Fixing Handles

Translating a 16:16 pointer to a 0:32 pointer involves determining the segment linear base address for the selector portion of the pointer and adding the offset to it. The 16-bit global memory compactor in Windows 95/98 can move a block of memory allocated by 16-bit code at any time, making the linear base address invalid. When the thunk compiler converts pointers from 16:16 to 0:32, it fixes the segment portion of the 16:16 pointer before computing the linear base address. If you translate pointers without using the thunk compiler, however, you must fix the segment portion. For more information about the functions you can use to translate pointers, see Translating 16:16 Pointers.