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.