You can design a dynamic-link library (DLL) to serve as a repository for data shared between applications. This dynamic-link library offers an application interface for storing and retrieving data. The data itself is stored in the library's local heap or in the static data area of its data segment. Handles or addresses of this data can be passed to applications only as logical identifiers, never to be deferenced by the applications themselves. Only the dynamic-link library can dereference its handles or address, using the GlobalUnlock or LocalUnlock function or address indirection. In general, you can use only the dynamic-link library's data segment for data exchange.