Disclosed is a method for one computing device (the "provider") to provide
peripheral services to another device (the "host"). A user directly runs
the host. The host accesses the provider as if the provider were a set of
peripheral devices attached to the host. In this way, the host and
provider become, in effect, one device with the combined capabilities of
both devices. The provider switches between two modes: In standalone
mode, the provider acts as an individual device; upon switching to
auxiliary mode, the provider provides peripheral services to the host but
can still run applications and present an input/output interface to its
own user. When the peripheral device provided to the host is a display
screen, the host can map the provided screen into the host's own video
memory, thus hiding implementation details from applications that use the
screens. One device can simultaneously act as provider and host.