The symbols exported by a domain are those that are intentionally externalized by the compiler and the assembler based on programmer directives. For example, a code module that implements an interface implicitly externalizes the symbols that define the entry points described in the interface. In terms of dynamic linking, all domains are created at runtime, either by operating on accessible interfaces, or by manipulating existing domains. Our build environment provides tools for specifying at compile time, any domains that should be created at runtime, or that are required at runtime, for a particular target being built. Domains can be intersecting or disjoint, which enables applications to share services or define new ones.
Figure summarizes the major operations on domains.
A domain is created using either Create or CreateFromInterface . The former define domains from object files or libraries, while the latter defines them from interfaces already accessible within a loaded module. Any imported symbols and unresolved symbols are left unresolved. The Domain interface. The Resolve operation serves as the basis for dynamic linking.