Aside from the LibMain initialization function, STRLIB contains only the three functions that it will export to be used by other programs. All these functions are defined as FAR and PASCAL. They must be FAR because they will be called from the code segment of another module (STRPROG). You aren't required to define them as PASCAL, however: That's simply a convention used in other Windows libraries to save a few bytes of space. These three functions use Windows' local memory allocation functions to allocate space in the local heap for storing the character strings. Because the AddString function allocates moveable local blocks, we've essentially given Windows the job of reorganizing the local heap when necessary to allocate more memory.