The process through which a SANE frontend connects to a backend is platform dependent. Several possibilities exist:
With definitions of this kind, backend generic will export function name generic_sane_read(). Thus, all backends will export unique names. As long as a meta backend knows about these names, it is possible to combine several backends at link time and select and use them dynamically at runtime.#define sane_read generic_sane_read
More importantly, dynamic linking makes it easy to implement a meta backend that loads other backends on demand. This is a powerful mechanism since it allows adding new backends merely by installing a shared library and updating a configuration file.
The above discussion lists just a few ways for frontends to attach to a backend. It is of course possible to combine these solutions to provide an entire hierarchy of SANE backends. Such a sample hierarchy is depicted in Figure 1.