Because the DLL version of the Essential Tools Module uses the large memory model, any data segment that uses it must be fixed. For example, if you were to create an
RWCollectable object in your data segment and insert it into an Essential Tools Module collection, that collection will be holding a four byte pointer. If your data segment were to move, the pointer would no longer be valid. Hence, be sure that your
.DEF definition file has a line similar to the following:
Note that with Microsoft's decision to abandon real mode Windows, working with fixed data and global memory is no longer the problem it used to be. The extra level of indirection offered by protected mode allows data to be moved around in physical memory without invalidating selectors. The entries in the descriptor table are changed instead.