Lending target device resources to host device computing environment

Various models may enable a first device to share a device resource with a second device in various contexts, such as sharing computing sessions via terminal services; sharing displays via display mirroring; and sharing input components across devices. However, such techniques often utilize ad hoc sharing models that depend on configuration and/or administrative access of each device; limit the capabilities of such sharing; and/or exhibit security concerns. Instead, a target device may advertise an availability of a target device resource. A host device may request the target device to lend the target device resource to the computing environment of the host device. The target device may reserve the target device resource for the host device, which may then integrate the target device resource into the host computing environment. The model may enable the user to utilize resources even from target devices that the user is not otherwise permitted to use.

BACKGROUND

Within the field of computing, many scenarios involve a user of a first device who wishes to interact also with a second device. As a first such example, a user may wish to initiate a terminal services session on a remote device. The user may connect a local device to the remote device over a network; may login to a user account on the remote device through the local device; and initiate the terminal services session on the remote device. Upon being presented with a terminal services session provided by the remote device to the local device, the user may interact with the second remote by providing input and receiving output through the local device. As a second such example, the user may request a mirroring of a display of a host device to a presentation device, such as a projector, and the same view of a host computing environment of the host device may be displayed both on a display of the host device and through the projector. As a third such example, a user may configure a first device to share user input (such as a keyboard and mouse) of the first device with a second device; e.g., the first device may receive the user input within a first computing environment of the first device, and may transmit some of the user input to the second device. In these and other ways, a user of various devices may enable the devices to interoperate in order to share device resources.

SUMMARY

The available techniques for sharing resources among devices may exhibit some disadvantages. As a first such example, such techniques may depend upon an administrative configuration of each device by the user; e.g., a user may not typically initiate a terminal services session with a remote device that is not preconfigured to permit the user to do so, and keyboard and mouse sharing may involve the configuration by each device as an input sharing server and client. It may be more difficult for a user to couple the user's device with a second device on which the user does not have administrative privileges, and that has not been preconfigured to interoperate with the first device. As a second such example, these techniques may enable a resource of a first device to be shared with a second device, but may do so in an ad hoc manner, such that the shared resource is not represented as a resource of the second device in an equivalent manner as the other resources of the second device. As a third such example, these models may be based on a “pull” interaction model, whereby a first device initiates the interaction to utilize the resources from a second device. For example, in a terminal services session, a terminal services client initiates the request to receive a terminal session within a terminal services server, and the terminal services server then provides the computing environment to the user. However, such “pull” models often depend on the first device being able to discover the second device in order to initiate the request, and it may be difficult to achieve such discovery in some scenarios. As a fourth such example, various resource sharing models may not provide fine control over which resources are shared by a first device with a second device, and may therefore provided limited affordance for the preferences and security concerns of the user of the second device.

Presented herein are techniques that enable a target device resource of a target device, such as a display, keyboard, mouse, speakers, or network connection, to be integrated with a host computing environment of a host device. In accordance with these techniques, a target device may advertise an availability of a target device resource for use by other devices. A host computer having a host computing environment may detect an availability of the target device resource through the target device, and may receive a request from a host device user to utilize the target device resource within the host computing environment. The host device may therefore transmit a request to the target device to borrow the target device resource for use in the host computing environment. Upon receiving and accepting the request, the target device may reserve the target device resource for the host computing environment, and the host computing environment may integrate the target device resource with the host device resources of the host computing environment. In this manner, the host device may integrate the target device resource with the host computing environment on behalf of the host device user in accordance with the techniques presented herein.

The techniques presented herein may enable a user of a device to enable resource sharing in a comparatively casual manner; e.g., the user may simply borrow a selected target resource of the target device for the host device, such as temporarily having the mouse input from the target device redirected to the host computing environment. Such resource borrowing and lending may be achieved in a comparatively simple and casual manner; e.g., unlike terminal services, the user of the host device may not have to have a user account on the target device, or even be known to the target device, in order to negotiate such resource borrowing. In some embodiments, the host device user may have no permission to access the target computing environment of the target device, and the local user interface for the target device may even be completely locked and inaccessible to anyone except the target device user; and nevertheless, the target device may fulfill requests to “borrow” its keyboard, mouse, video, network connection, or other target device resources to the host device. Such borrowing and lending may be achieved without admitting the host device to the target computing environment of the target device; i.e., the target computing environment may be isolated, suspended, or otherwise safeguarded from unauthorized access by the host device through the resource borrowing and lending interaction.

The techniques presented herein may also enable the host device to utilize the target device as a portal into the host computing environment. For example, the target device may suspend much or all of its native computing environment, and may reallocate computing resources to the presentation of the host computing environment transmitted by the host device. In some scenarios, the borrowing of the resources of the target device by the host device, and the presentation of the host computing environment rendered by comparatively robust hardware of the host device, may enable the target device to present a higher-quality user experience than the target device is capable of achieving with its native computing environment. Target devices that have outlived an initial role may therefore be repurposed as portals into the host computing environment of the host device through the use of the techniques presented herein.

DETAILED DESCRIPTION

Within the field of computing, many techniques may be utilized to enable a first device to share resources with a second device, such as presenting video, sound, keyboard, mouse input, storage, network connections, and peripheral components such as printers. The various models may suit different interests of the users requesting such resource sharing, such as complexity, consent, security, configurability, and ease of use.

FIG. 1presents an illustration of an exemplary scenario featuring three such models for enabling resource sharing between devices.

A first example scenario100ofFIG. 1presents an illustration of a terminal services sharing technique, wherein a user102who wishes to interact with a host computing environment106of a host device104may establish a terminal services session through a target device108. For example, the user102may, through a target computing environment110of the target device108, establish a connection and initiate a terminal services request112with the host device104, e.g., by providing login credentials to an account of the user102on the host device104. Upon verifying the login credentials of the user102with a local account of the user102within the host computing environment106, the host device104may initiate the terminal services session114, which causes a presentation on the target device108of a host computing environment view, within the target computing environment view116of the target device108(e.g., the desktop environment of the host computing environment106may appear within a window presented in the target computing environment110). The user102may interact with the host computing environment view118as if the user102were physically accessing the host device104, e.g., by using input devices of the target device108to direct input to the host device104for application to the host computing environment106and applications provided therein. A similar model is provided by a telnet and/or secure shell (SSH) session, wherein a user account of the user102within the host computing environment106may be presented within a console view on the target device108.

A second example scenario120ofFIG. 1presents an illustration of a display mirroring model, such as a Wireless Display (Wi-Di) model, wherein a user102of a host device104requests to mirror a display of the host computing environment106on a display of a target device108, such as a projector. The host device104may initiate an offer122to mirror the display to the target device108, and upon receiving an acceptance124of the offer122, the host device104may mirror126a display of the host computing environment106on the target device108.

A third example scenario128ofFIG. 1presents an illustration of an input sharing model, wherein a user102of two devices may configure input and/or output to be shared among the devices. For example, the user102may configure a first device134to utilize some of user input134(e.g., text input136via a keyboard, and pointing input138via a mouse) within a first computing environment132, but may also toggle the first device130to transmit140the user input134to a second device142for processing within a second computing environment142. The user102may also configure the second device142to receive the user input134from the first device130, and to apply the user input within a second computing environment144of the second device142. By so configuring the first device130and the second device142and establishing a connection therebetween, the user102may achieve a sharing of user input134across the devices.

Each of the techniques presented in the example scenarios ofFIG. 1enables various models for resource sharing among devices. Some of these models may be more capable, easier to use, and/or satisfactory for some scenarios than other models. However, each model may exhibit some disadvantages that diminish the applicability and suitability of such model for particular scenarios.

As a first example, many models for resource sharing depend on a preconfiguration of the devices by the user102to enable such resource sharing. For example, host devices104do not typically allow any user102to establish a terminal services session114with the host device104, but only permit users102who have a user account within the host computing environment106to initiate such sessions, because allowing any user102to initiate a terminal services session114may represent a security vulnerability. Similarly, the configuration of input sharing128typically involves configuration by the user102to permit the first device130to transmit user input134, and the second device142to receive and accept the user input134, because allowing unknown users102to transmit and/or receive input into the computing environment of each device130may represent a security risk. Conversely, a device may provide resources upon request by anyone, such as in the projector scenario, but a user of the resource-sharing device may not be willing to allow unknown and/or unauthorized individuals to access the resources of the device arbitrarily, as this may entail an unacceptable security risk and/or depletion of the resources of the resource-sharing device.

As a second example, many models for sharing resources are constrained to sharing a particular type of resource. As a first such example, terminal services models enable sharing a terminal services session114that typically extends to the target device108the complete set of resources that are available to the user102of the host device104. However, the user102may only wish to utilize a selected host device resource of the host computing environment106of the host device104, but may be unable to limit the terminal services session114to the particular host device resource. Similarly, Wireless Display enables the mirroring of a display, and input sharing enables the sharing of user input134, but it may be difficult to extend such sharing models to involve other types of resources, such as sound, peripherals such as network connections, scanning and fax equipment, and communication sessions. Rather, each model may be provided for a specific type of resource sharing, but may be limited only to such sharing.

As a third example, the sharing of a resource of a first device with a second device is often not well-integrated with the computing environment of the second device, but may simply be received and applied in an ad hoc manner. For example, in the terminal services model, the resources of the host device104are encapsulated within the host computing environment view118of the host computing environment106, and are treated by the target device108in a different manner than the target resources of the target device108. Similarly, in the wireless display model, the user102may view a mirror of the display on the projector, but may not be able to utilize any resources of the projector to interact with the host computing environment106; e.g., the projector may be limited to mirroring the host computing environment106transmitted by the host device104in a non-interactive manner, even if the projector is a target device108including one or more input devices. As a third such example, the sharing of user input134by the first device130may be implemented as a stream of user input commands transmitted to the second device142, but the second device142may not represent the user input devices of the first device130as distinct resources (e.g., user input devices) within the second computing environment114. For example, the second device142may not be capable of interacting with the user input devices of the first device130(e.g., querying such devices for input device properties, such as the activation of caps lock or number lock on the keyboard, and/or configuring the mouse of the first device130to adjust features such as pointer acceleration). Rather, an input sharing server of the second device142may simply apply the user input134received from the first device130in an ad hoc manner, and may not even be informed of the types of user input devices provided on the first device130(e.g., whether pointing input is being received through a mouse, stylus, trackball, touch-sensitive, gestural, or gaze-tracking device). Indeed, it may even be difficult for a user102of the second device142to determine the source of the user input134; e.g., none of the input devices registered with the second device104may exhibit the user input134that is being received and processed by the second device142. These and other disadvantages may arise within the context of many resource sharing models, including those illustrated in the example scenarios ofFIG. 1, that diminish the applicability and ease of use of such techniques for various scenarios and interests.

B. PRESENTED TECHNIQUES

Presented herein are techniques for enabling resource borrowing and lending among devices in a manner that may integrate particular resources of a target device108with a host computing environment106of a host device104. In accordance with such techniques, a target device108may advertise an availability of a target device resource of the target device for integration with a host computing environment106of a host device104. The host device104may detect such availability, and, responsive to receiving a request from a host device user102to integrate the target device resource with the host computing environment106, may transmit to the target device108a request to borrow the target device resource for use in the host computing environment106. The target device108may accept the offer, and reserve the target device resource for the host computing environment106(e.g., binding an input component exclusively or non-exclusively to the host computing environment106, and/or reserving part or all of a presentation device for rendering at least a portion of the host computing environment106of the host device104). Responsive to receiving the acceptance of the request from the target device108, the host device104may integrate the target device resource with the host computing environment106alongside the host device resources (e.g., representing a user input device of the target device108as a first-class input device, on par with other user input devices that are physically and/or wirelessly directly connected to the host device104), and may present the target device resource to the host device user102within the host computing environment106. The user102may then utilize the resources of the target device108while interacting with the host device104, e.g., “borrowing” a mouse that is physically connected to the target device108in order to provide input within the host computing environment106of the host device104.

FIG. 2presents an illustration of an example scenario200featuring a borrowing of target device resources210of a target device108to a host device104in accordance with the techniques presented herein. In this example scenario200, at a first time202, a user102of the host device104may initiate a request to borrow specific target device resources210of the target device108for use by the host device104, such as the display and mouse of the target device108. The host device104may transmit a resource request204to the target device108, which may be presented to a user102of the target device108(although, in other scenarios, the resource request204may be evaluated autonomously by the target device108). The user102of the target device108may receive and consider the resource request204, and may authorize the borrowing of the target device resources210for use in the host device104. Accordingly, the target device108may transmit an acceptance206of the resource request204to the host device104.

At a second time208, the host device104and the target device108may fulfill the borrowing of the target device resources210for use in the host device104. The target device108may reserve the target device resources210for use by the host device104(e.g., initiating a borrowing of a target device resource210between the target computing environment110and the host device104, and/or withdrawing a target device resource210from the target computing environment110while lent to the host device104). The host device104may also integrate the target device resources210in the host computing environment resource set212, e.g., adding216the target device resources210as first-class devices within the host computing environment106, alongside the host device resources214that are directly attached to the host device104. For example, when the target device108receives target user input134through a target device resource210that has been lent to the host device104, the target device108may transmit the target user input134to the host device104, which may apply the target user input134to the host computing environment106alongside host user input218received through a host device input resource, such as a keyboard directly connected to the host device104. The host computing environment106may also presented on both a host device display of the host device104and a target device display of the target device108that has been lent to the host device104. Additionally, the target computing environment220may be secured from the host computing environment106, e.g., by locking220and/or suspending the target computing environment110while the target device resources210are lent to and integrated with the host computing environment106. In this manner, the host device104and target device108may interoperate to achieve the borrowing of the target device resources210for use in the host device104in accordance with the techniques presented herein.

C. TECHNICAL EFFECTS

The use of the techniques presented herein to borrow target device resources210of the target device108for use in the host device104may exhibit a variety of technical effects for the host device104and/or the target device108.

As a first example of a technical effect that may be achievable by the techniques presented herein, the host device104and target device108may share target device resources210in an easier and more casual manner than other sharing techniques, such as terminal services. A terminal services session (such as illustrated in the first example scenario100ofFIG. 1) depends upon several criteria: first, the user102has a user account on the host device104for which terminal services has been enabled; second, the user102is able to access the target computing environment110of the target device108to initiate the terminal services request112; third, the target device108has to be able to discover and initiate contact with the host device104; and fourth, the user102has to authenticate himself for herself with the host device104, such as by providing login credentials. The failure of any such criteria may prohibit the initiation of the terminal services session114; e.g., if the user102does not remember the address of the host device104, or if the target device108is unable to contact the host device104such as due to a firewall, the terminal services session114is unachievable. By contrast, in the techniques illustrated in the example scenario200ofFIG. 2, the user102of the host device104does not have to have a user account with the target device108, and does not have to access the target device108, which may fulfill the resource request204through an autonomous acceptance206of the borrowing request and/or acceptance by the user102of the target device108. Such borrowing and lending of target device resources204may therefore be achieved in a comparatively easier and more casual manner.

As a second example of a technical effect that may be achievable by the techniques presented herein, the casual borrowing and lending of target device resources210may enable resource sharing scenarios that are not achievable through other models. As a first such example, a target device108may permit the borrowing of target device resources204by a user102and/or host device104that are not otherwise permitted to utilize the target device108. For example, the target device108may prohibit the user102from logging into the target device108or interacting with the target computing environment110, and may actively isolate the target computing environment110from the user102(e.g., by locking the target device108to anyone but the user102of the target device108), but may nevertheless permit the borrowing of a mouse or display to the host device104for integration with the host computing environment106. As a second such example, the integration of the target device resources210alongside the host device resources214of the host device104may enable a user102of the host device104and a user102of the target device108to interact with the host computing environment106together. For example, the host device user102may provide host user input218through the input devices and display that are directly connected to the host device104and the target device user102may provide target user input134through the input devices and display of the target device108that have been lent to the host computing environment106, and the host computing environment106may concurrently reflect both sources of input and both displays. Such concurrent utilization may not be achievable through other resource sharing models; e.g., when a user102initiates a terminal services session114from a target device108, the host device104often locks out local access to the host device104and/or the same user account for the duration of the terminal services session114.

As a third example of a technical effect that may be achievable by the techniques presented herein, the sharing of target device210as provided herein may enable a finer level of detail in the borrowing and lending than are achievable through other resource sharing models. For example, when the user102of the host device104initiates a terminal services session114, the entire host computing environment106may be exposed to the target device108. However, this may not be the intent of the user102; rather, the user102may only wish to utilize the mouse of the target device108with the host device104without also displaying the contents of the host computing environment106on the target device108, or may only wish to display some content of the host device104on the target device108without enabling user input to be directed by the target device108to the host device104. Similarly, the user102of the target device108may wish to lend only a specific target device resource to the host device104, such as only the mouse, but may be unable to achieve such selective resource sharing in the context of a terminal services session114. The example scenario200ofFIG. 2illustrates the achievable selectivity of target device resource lending and borrowing in accordance with the techniques presented herein.

As a fourth example of a technical effect that may be achievable through the use of the techniques presented herein, the integration of the target device resources210with the host computing environment106may present a more robust representation of such target device resources210than ad hoc resource sharing models. For example, in the third example scenario128ofFIG. 1, the user input sharing architecture may enable the first device130to push user input134to the second device142; e.g., the first device130may simply present abstract user input instructions to the second device142, such as text entry and pointer movement, without even indicating the type of input device through which such user input134was received through the first device103. However, the second device142may not have any capability to interact with the input components of the first device130(e.g., in order to adjust the mouse acceleration or button-click effects of a mouse device, or the touch-sensitivity or recognized gestures of a touch-sensitive display or touchpad). The input devices of the first device130do not appear in the second computing environment144, and it may be difficult for applications on the second device142even to determine the source of the user input, which may not have originated through any of the input devices represented in the second computing environment114. By contrast, the techniques presented herein enable a more consistent and robust resource sharing model by integrating the borrowed target device resources210with the host computing environment106.

As a fifth example of a technical effect that may be achievable by the techniques presented herein, the borrowing and lending of target device resources210may enable the host device104to drive a robust computing environment experience through the target device108. For example, if the host device104borrows the keyboard and mouse input of the target device108, as well as the video and sound output of the target device108, the host device104may present a complete experience of the host computing environment106upon the target device108. The target device108may also present the host computing environment106while suspending the target computing environment110of the target device108, which may enable the target device108to allocate computational resources to the presentation of the host computing environment106that might otherwise be divided therebetween (e.g., in contrast with a terminal services model, in which the processor, memory, input, network connection, and other resources of the target device108are often divided between the terminal services session114and the target computing environment110). The target device108may therefore present a comparatively high-quality experience from the host device104by allocating a majority of computational resources to the presentation of the host computing environment106. In some scenarios, a target device108featuring comparatively limited and/or outdated computational hardware, such as a commodity tablet lacking a graphics coprocessor, may present a host computing environment106rendered by a host computer104featuring comparatively sophisticated hardware. In this case, the presentation of the host computing environment106may exceed the robustness, graphics quality, and/or responsiveness of the native target computing environment110of the target device108. The techniques presented herein may therefore facilitate device repurposing for comparatively outdated hardware (e.g., a user102of the target device108may not have a sufficient use for the native target computing environment110of the target device108, but may achieve repurposed functionality by using the target device108as a portal into the host computing environment106).

As a sixth example of a technical effect that may be achievable through the use of the techniques presented herein, the borrowing of target device resources210may permit the host device104to present resources and content to the target device108that the target device108is not natively capable of using. As a first such example, the user102may wish to present an application on the target device108that is not compatible with the target computing environment110(e.g., the application may be compiled for an instruction set and/or architecture than the target computing environment110supports). Instead, the user102may execute the application on the host device104and present the host computing environment106using the target device resources210of the target device108. As a second such example, the host device104may have an application or content that the host device104is licensed to use, but that the target device108is not. Rather than transmitting such resources to the target device108that are not usable there, the host device104may locally execute the application or render the content, and may borrow target device resources210of the target device108to present part or all of the application or content through the target device108. These and other technical effects may be achievable through various implementations of the techniques presented herein.

FIG. 3presents a first example embodiment of the techniques presented herein, illustrated as an example method300of configuring a host device104to integrate a target device resource210of a target device108with a host computing environment106of the host device104. The example method300may be implemented, e.g., as a set of instructions stored in a memory component of the host device104, such as a memory circuit, a platter of a hard disk drive, a solid-state storage device, or a magnetic or optical disc, and organized such that, when executed on a processor of the device, cause the host device104to operate according to the techniques presented herein.

The example method300begins at302and involves executing304the instructions on a processor of the host device104. Specifically, executing304the instructions on the processor causes the host device104to detect306an availability of the target device resource210through the target device108. Executing304the instructions on the processor causes the host device104to, responsive308to receiving a request from a host device user102to borrow the target device resource210for use in the host computing environment106, transmit310to the target device108a request204to borrow the target device resource210for use in the host computing environment106. Executing304the instructions on the processor causes the host device104to, responsive312to receiving from the target device108an acceptance206of the request204, integrate314the target device resource210with the host device resources214of the host computing environment106, and present316the target device resource210to the host device user102within the host computing environment106. In this manner, the instructions cause the host device104to integrate the target device resources210of the target device104with the host computing environment106in accordance with the techniques presented herein, and so the example method ends at318.

A second example embodiment of the techniques presented herein (not illustrated) involves an example method of configuring a target device108to lend target device resources210from a target computing environment110for use in a host computing environment106of a host device104. Such an example method may involve, e.g., executing, on a processor of the target device108, instructions that cause the target device108to advertise an availability of the target device resource210; and responsive to receiving a request204to borrow the target device resource for use in the host computing environment, reserving the target device resource210for the host computing environment106, and transmitting206an acceptance of the request204to the host device104. In this manner, the instructions cause the target device108to lend the target device resources210from the target computing environment110for use in the host computing environment106in accordance with the techniques presented herein, and so the example method ends.

FIG. 4presents further example embodiments of the techniques presented herein, illustrated as example systems respectively implemented on an example host device402and an example target device404that respectively implement at least a portion of the techniques presented herein. The example host device402hosts and/or manages a host computing environment106featuring one or more host device resources214, such as representations of devices that are directly connected to the example host device402(e.g., user interface, applications, visual features such as fonts and color schemes, data, application configurations, contact lists, and user accounts and credentials), and the example target device404hosts a target computing environment110featuring a target device resource210. In this exemplary scenario400, each of the example host device402and the example target device404includes a processor406and a memory408that stores processor-executable instructions that implement, on each device, an example system that implements at least a portion of the techniques presented herein. The respective example systems may be implemented, e.g., as a set of components respectively comprising a set of instructions stored in the memory408of the respective example devices, where the instructions of respective components, when executed on the processor406, cause the example device to operate in accordance with the techniques presented herein. Alternatively, the respective components may be implemented as a discrete circuit or hardware device, or a combination thereof, that operate in accordance with the techniques presented herein.

The example host device402includes a first example system410comprising a target device resource request412, which detects an availability422of the target device resource210through the example target device404, and, responsive to receiving a request202from a host device user102to integrate the target device resource210with the host computing environment106, transmit to the example target device404a request202to borrow the target device resource210for use in the host computing environment106. The first example system410also includes a target device resource integrator414, which, responsive to receiving from the example target device404an acceptance204of the request202, integrates the target device resource210with the host device resources214of the host computing environment106, and present the target device resource210to the host device user102within the host computing environment106.

The example target device404includes a second example system416that a target device resource advertiser418, which transmits (e.g., by broadcast, multicast, or in response to a query) an advertisement of an availability422of the target device resource210. The example target device404also includes a device resource lender420, which, responsive to receiving a request202to borrow the target device resource210for use in the host computing environment106, reserves424the target device resource210for the host computing environment106, and transmits an acceptance204of the request202to the host device402. The interoperation of the example host device402and the example target device404utilizing such example systems may enable a cooperative integration of the target device resource210of the example target device40within the host computing environment106of the example host device402in accordance with the techniques presented herein.

Still another embodiment involves a computer-readable medium comprising processor-executable instructions configured to apply the techniques presented herein. Such computer-readable media may include various types of communications media, such as a signal that may be propagated through various physical phenomena (e.g., an electromagnetic signal, a sound wave signal, or an optical signal) and in various wired scenarios (e.g., via an Ethernet or fiber optic cable) and/or wireless scenarios (e.g., a wireless local area network (WLAN) such as WiFi, a personal area network (PAN) such as Bluetooth, or a cellular or radio network), and which encodes a set of computer-readable instructions that, when executed by a processor of a device, cause the device to implement the techniques presented herein. Such computer-readable media may also include (as a class of technologies that excludes communications media) computer-computer-readable memory devices, such as a memory semiconductor (e.g., a semiconductor utilizing static random access memory (SRAM), dynamic random access memory (DRAM), and/or synchronous dynamic random access memory (SDRAM) technologies), a platter of a hard disk drive, a flash memory device, or a magnetic or optical disc (such as a CD-R, DVD-R, or floppy disc), encoding a set of computer-readable instructions that, when executed by a processor of a device, cause the device to implement the techniques presented herein.

An example computer-readable medium that may be devised in these ways is illustrated inFIG. 5, wherein the implementation500comprises a computer-readable memory device502(e.g., a CD-R, DVD-R, or a platter of a hard disk drive), on which is encoded computer-readable data504. This computer-readable data504in turn comprises a set of computer instructions506that, when executed on a processor406of a device510, cause the device510to operate according to the principles set forth herein. In a first such embodiment, the processor-executable instructions506may cause a host device202to integrate a target device resource210of a target device108with a host computing environment106of the host device104, such as the example method300ofFIG. 3. In a second such embodiment, the processor-executable instructions506may cause a host device104and/or a target device108to implement systems that enable the integration of the target device resources210with the host computing environment106of a host device104, such as the example systems presented in the example scenario400ofFIG. 4. Many such computer-readable media may be devised by those of ordinary skill in the art that are configured to operate in accordance with the techniques presented herein.

The techniques discussed herein may be devised with variations in many aspects, and some variations may present additional advantages and/or reduce disadvantages with respect to other variations of these and other techniques. Moreover, some variations may be implemented in combination, and some combinations may feature additional advantages and/or reduced disadvantages through synergistic cooperation. The variations may be incorporated in various embodiments (e.g., the example method300ofFIG. 3; the example systems ofFIG. 4; and the example memory device502ofFIG. 5) to confer individual and/or synergistic advantages upon such embodiments.

A first aspect that may vary among embodiments of these techniques relates to the scenarios wherein such techniques may be utilized.

As a first variation of this first aspect, the techniques presented herein may be utilized to achieve the configuration of a variety of host devices104and/or target devices108, such as workstations, laptops, tablets, mobile phones, game consoles, portable gaming devices, portable or non-portable media players, media display devices such as televisions, appliances, home automation devices, computing components integrated with a wearable device such as an eyepiece or a watch, and supervisory control and data acquisition (SCADA) devices.

As a second variation of this first aspect, the target device resources210and the host device resources214may comprise a variety of resource types, including output devices (e.g., displays, speakers, and haptic output devices, such as vibration mechanisms); input devices (e.g., keyboards, mice, styli, touch-sensitive displays and touchpads, gesture- and gaze-tracking devices, and biometric input devices); peripherals (e.g., printers, scanners, cameras, and robotic components); communication resources (e.g., network connections, interfaces, and devices); and basic computing resources (e.g., processing capacity and storage capacity).

As a third variation of this first aspect, the techniques presented herein may be utilized with a variety of architectures and/or relationships of the host device104and the target device108. As a first such example, the respective devices may utilize components that are directly and physically connected to the device, such as wired displays, speakers, and headphones. As a second such example, the respective devices may utilize one more components that are accessible via a wireless connection, such as a radiofrequency. As a third such example, the respective devices may communicate over a personal-area, local-area, and/or wide-area network in order to interoperate according to the techniques presented herein. As a fourth such example, the respective device may utilize one or more components that are accessible through a third device of a device collection, such as in a client/server or peer-to-peer architecture. Moreover, each of the host device104and the target device108may be utilized by one user102or a group of users102, and/or may be controlled by at least one first user102on behalf of at least one second user102. These and other scenarios may be suitable for the integration of the target device resources210of the target device108with the host computing environment106of the host device104, in accordance with the techniques presented herein.

E2. Establishing Target Device Resource Lending

A second aspect that may vary among embodiments of the techniques presented herein involves the manner of establishing the lending of the target device resource210from the target device108to the host device104.

As a first variation of this second aspect, the host device104may discover the availability422of the target device resource210in a variety of ways. As a first such example, the target device108may advertise the availability422of the target device resource210, e.g., by broadcasting the available resource over a short-range network, a local area network, or a wide-area network, or by listing the target device resource210in an availability catalog of available target device resources available through various target deices108. The host device104may then receive the advertisement of such availability422of the target device resource210(e.g., by receiving such a broadcast or finding the target device resource210in the availability catalog). As a second such example, the host device104may broadcast a query for available target device resources210, which, optionally, may specify a particular type of target device resource210that the host device104wishes to present within the host computing environment106. The target device210may respond by notifying the host device104of the availability422of at least one target device resource210through the target device108. As a third such example, the host device104and target device108may initiate a specific connection that provides a basis for advertising the availability422of the target device resources210for the host device104. For example, a detection of a physical proximity of the host device104and the target device108within a physical proximity threshold (e.g., the user102may set down a mobile host device104on top of or within one meter of a target device108from which the user102wishes to borrow target device resources210) may trigger the advertisement of the availability422of the target device resources210to the host device104.

As a second variation of this second aspect, the host device104and target device108may negotiate the availability422of the target device resource210for the host device104. As a first such example, the host device104and the target device108may engage in scheduling (e.g., identifying a block of time for the reservation of the target device resource210for the host device104). As a second such example, the host device104and the target device108may utilize load balancing (e.g., among a set of available target devices108and target device resources210, identifying a selected target device108and target device resource210that are idle and/or well-adapted to the circumstances of the host device104). As a third such example, the host device104and the target device108may engage in bargaining (e.g., negotiating and agreeing upon a cost for the reservation of the target device resource210for the host device104). As a fourth such example, the target device108may engage in resource lending only with specific host device104. As one such example, the availability422of the target device resource210to host devices104may be constrained by an access credential (e.g., a password or certificate). The host device104may submit the access credential with the request, and the target device108may reserve the target device resource210for the host device104only upon verifying the access credential. Alternatively or additionally, if the target device108and the host device104have a trust relationship, the target device108may automatically grant or even initiate the lending of target device resources210upon connecting to and authenticating the host device104.

As a third variation of this second aspect, the host device104and/or the target device108may autonomously engage in the borrowing and lending of the target device resources210(e.g., the target device108may autonomously agree to lending target device resources210, even if the target device108is idle, locked, suspended, powered down, or otherwise not in use by a user102). Alternatively, the host device104and/or the target device108may condition such interaction on the authorization of a user102. As a first such example, upon detecting the availability422of a target device resource210through a target device108, a host device104may notify a host device user102of the availability422of the target device resource210for integration with the host computing environment106, and may await a request202from the user102before initiating the resource lending. As a second such example, a target device108that is operated by a target device user102may, responsive to receiving the request202to borrow the target device resource210for use by the host device104, present the request202to the target device user102, and transmit the acceptance204only upon receiving an acceptance of the request202from the target device user102.

As a fourth variation of this second aspect, the borrowing and lending of target device resources210may be limited to particular target device resources210of a target device resource set210. As a first such example, the target device108may advertise the availability422only of selected target device resources210(e.g., advertising the availability422of a display only when not in use by a target device user102), and may consider the other target device resources210to be unavailable. As a second such example, the target device108advertises an availability422of at least two target device resources210, but the host device104may only request a borrowing of a selected target device resource (e.g., requesting only to borrow the mouse, and not the keyboard). Accordingly, the request202from the host device user102may specify the selected target device resource104to be integrated with the host computing environment106, and the host device104may transmit to the target device108a request202to borrow only the selected target device resource210for use in the host computing environment106. The target device108may notify a target device user102of the selected target device resources210that the host device104has requested in order to facilitate the user's choice.

As a fifth variation of this second aspect, the request202of the host device104to borrow a target device resource210may also inform the target device108of the intended use of the target device resource210. For example, the target device resource210further comprises a target presentation component (e.g., a display or speakers), and the request202from the host device user102may specify a particular content item to be presented through the target presentation component of the target108(e.g., a particular image, video, sound recording, document, or web page that the user102wishes to present through the target device108). The request202may therefore include a description of the content item (e.g., a text description, summary, or preview, such as a thumbnail version of the image) to be presented through the presentation component of the target device108, which the target device108may present to a target device user102to assist with the user's choice. As a further variation, the target device108may engage in the lending of the target device resource108only for the duration of the presentation of the specified content item, and may then automatically terminate the lending and release the reservation of the target device resource210for the host device104(e.g., terminating the lending of a display upon completion of a video for which the lending was authorized).

FIG. 6presents an illustration of an example scenario600featuring an interaction of a host device104and a target device108to lend a target device resource210of the target device108to the host device104. In this example scenario600, a host device user102of the host device104wishes to play a content item602(specifically, a song recording), but may not have suitable equipment on the host device104(e.g., a mobile phone may feature only a low-powered and low-quality speaker). The target device108may advertise the availability422of various target device resource210, such as a display, a mouse, and speakers. The host device104may notify the host device user102of such availability422, and the user102may initiate a request to present the content item602on the speakers of the target device108. The host device104may send to the target device108a request202to borrow the target device resource210for use by the host device104, and particularly for the task of rendering the content item602. The target device108may present the request202to a target device user102, who may reply with an acceptance204of the request202. Accordingly, the target device108may reserve the target device resource210for the host device104(e.g., fading out of halting any sound playing through the speakers from the target computing environment110), and may transmit the acceptance204to the host device104. The host device104may integrate the speakers with the host computing environment106, and may initiate rendering of the content item602within the host computing environment106(e.g., initiating a rendering stream that is generally controlled and available within the host computing environment106, but where the audio stream is also transmitted to the target device108for presentation through the speakers). The target device108may accordingly render the content item602in fulfillment of the request202. At the conclusion of the rendering, the target device108may automatically terminate the lending of the target device resource210, may release the target device resource210back to the target computing environment110(e.g., fading in any sound playing through the target computing environment110), and may transmit a “lending complete” notification604to the host device104, which may reverse the integration of the target device resource210with the host computing environment106.

FIG. 7presents an illustration of an example scenario700featuring another variation in the borrowing of resources of a target device108by a host device104, wherein the borrowing of resources of a target device108for use by a host device104is in furtherance of a borrowing of the host device104by a second user102. In this example scenario700, a first user102who is accessing the host computing environment702wishes to allow a second user102to borrow and access the host device104, without interrupting the first user's interaction with the host computing environment702. Accordingly, the first user102may borrow the resources of a target device108, and may transmit the host computing environment to the target device108. Additionally, the host device102may present to the second user102a curated computing environment704(e.g., a computing environment that is limited to the use for which the second user102requested to use the host device104, such as an isolated web browser, a presentation only of a specific content item, or an execution of only a particular application on the host device104). The second user102may therefore interact with the curated computing environment704on the host device104while the first user102continues to access the host computing environment106through the target device108. The host device104and target device108may utilize many such variations in the lending of the target device resource210to the host device104in accordance with the techniques presented herein.

E3. Target Device Resource Integration with Host Computing Environment

A third aspect that may vary among embodiments of the techniques presented herein involves the manner of integrating the target device resource210with the host computing environment106of the host device104.

As a first variation of this third aspect, the target device108may exclusively reserve the target device resource210for the host device104, and may remove the target device resource210from a target computing environment110or mark the target device resource210as unavailable within the target computing environment110. Alternatively, the target device108may non-exclusively reserve the target device resource210, e.g., by sharing the target device resource210between the host device104and the target device108. As one such example, the target device108may establish sharing criteria for sharing the target device resource210with the host device104, e.g., directing target user input134to the target computing environment110in some circumstances and to the host computing environment110in other circumstances. As still another alternative, the target computing environment110may expose the target device resource210identically to the host device104and the target computing environment110, e.g., mirroring input and/or output in both computing environments.

FIG. 8presents an illustration of a second variation of this third aspect, wherein the target device resource210further comprises a target presentation component, and the host device104integrates the target device resource210with the host computing environment106by positioning the target presentation component relative to one or more host presentation components within a presentation component layout. In this example scenario800, the target device108lends a target display806and target user input134to the host device104, and the host device104integrates both the target display806and the target user input134with the host computing environment106. In particular, the host computing environment106positions the target display806within a display layout802, e.g., an extended desktop, relative to host displays804that are directly connected to the host device104. The target user input134provided by the target device108may also span the displays of the display layout802; e.g., the target device108may transmit the target user input134to the host device104, which may apply the target user input134within the host computing environment106. The host device104may then transmit display content808to the target device108, which may present the display content808on the target display806. In this manner, the target display806may be integrated with the host displays804of the host device104within the display layout802of the host computing environment106. As another such example, a speaker layout may involve assigned positions and/or roles of speakers within an audio environment (e.g., a left-channel speaker, a right-channel speaker, and a center-channel speaker), and the host computing environment106may position a speaker of the target device108relative to other speakers of the host device104within the audio environment.

As a third variation of this third aspect, a host device104may, in the context of integrating the target device resource210of the target device108with the host computing environment106of the host device104, inherently share some host device resources with the target device108. As one such example, the target device resource210may further comprise a target presentation component, upon which the host device104endeavors to render a content item that is accessible over a network. In some such scenarios, the host device104may request the target device108to retrieve the content item from the network for presentation, but this request may utilize the target network resources of the target device108. In the techniques presented herein, the host device104may instead retrieve the content item over a host network resource, and transmit it to the target device108for presentation through the target presentation component. This example may resemble “reverse internet connection sharing,” wherein the host device104, rather than requesting to use the target network resources of the target device108, instead utilizes its host network resources to facilitate the interaction with the target device108.

As a fourth variation of this third aspect, where the target device resource210further comprises a target presentation component, the host device104may integrate the target presentation component by transmitting at least a portion of the host computing environment106to the target device108for presentation through the target presentation component. For example, the host device104may transmit a complete rendering of the host computing environment106, or only a portion thereof, such as a window of a specific application or a region of a host display where a content item is being displayed. A system of the target device108may further include a host environment presenter, which, responsive to receiving at least a portion of the host computing environment106from the host device104, presents the host computing environment106through the target presentation component.

Further variations of this third aspect involve the manner in which the target device108adapts the target computing environment110while presenting at least a portion of the host computing environment106.

FIG. 9presents an illustration of an example scenario900featuring a fifth variation of this third aspect, wherein a target device108suspends a presentation of the target computing environment110on the target device106during the presentation of the host computing environment106. In this example scenario900, at a first time908, the target device108is presenting the target computing environment110in a running state902through a target presentation component. At a second time910, the target device108may receive a request202from a host device104to borrow the target presentation component for use by the host device104in order to present a host computing environment106. The target device108may therefore initiate a suspension106of the target computing environment110on the target presentation component, and may then reserve the target presentation component for the presentation of the host computing environment106. At a third time912, upon detecting a completion of the presentation of the host computing environment208(e.g., a disconnection of the host device104from the target device108), the target device108may initiate a resumption906of the target computing environment110on the target presentation component. This suspension of the target computing environment110while presenting the host computing environment106may be advantageous, e.g., for isolating the target computing environment110from the host computing environment106as a security feature, and also to promote the performance of the presentation of the host computing environment106on the target device108. As one such example, if the target device108comprises limited computing resources, such as a low-powered mobile processor and a limited amount of memory, suspending the target computing environment110may enable the target device108to maximize the allocation of computing resources for the presentation of the host computing environment106to provide a responsive, low-latency user experience.

FIG. 10presents an illustration of an example scenario1000featuring a sixth variation of this third aspect, wherein the target device108does not suspend the target computing environment110, but continues presenting the target computing environment110concurrently with a host computing environment106. In this example scenario1000, the host device104requests a target device108to borrow a target display806for the presentation of the host computing environment106, and also the transmission of target user input134provided through an input component of the target device108. Accordingly, the target device108may reserve a first target display806and an input component for the target user input134, and may transmit the target user input134to the host device104, which may apply it to the host computing environment106along with the target user input134. The host device104may then transmit display content1002for the first target display806to the target device108, and the target device108may present the display content1002on the target display806. In this manner, the host device104enables the integration of the target user input134and the first target display806in the host computing environment106, and enables a target device user and a host device user to use the host computing environment106together by providing user input through different devices. However, the target device108also continues to present the target computing environment110on a second target display806concurrently with presenting the host computing environment107on the first target display806, and allows some of the target device input134to be applied to the target computing environment110and displayed upon the second target display806, thus sharing the target device resource210among the host computing environment106and the target computing environment110. In this example scenario90, while the host device104implicitly transmits the host user input218back to the target device108as represented within the display content1002of the host computing environment106, the model restricts1006the application of the host user input218from being incorporated in the target computing environment110. In this manner, the model enables concurrent execution of the target computing environment110and the presentation of the host computing environment106on the first target display806, while enforcing an isolation1004of the target computing environment110form the host user input218. Many such scenarios may enable the integration of the target device resources210of the target device108with the host computing environment106in accordance with the techniques presented herein.

F. COMPUTING ENVIRONMENT

FIG. 11illustrates an example of a system1100comprising a computing device1102configured to implement one or more embodiments provided herein. In one configuration, computing device1102includes at least one processing unit1106and memory1108. Depending on the exact configuration and type of computing device, memory1108may be volatile (such as RAM, for example), non-volatile (such as ROM, flash memory, etc., for example) or some combination of the two. This configuration is illustrated inFIG. 11by dashed line1104.

In other embodiments, device1102may include additional features and/or functionality. For example, device1102may also include additional storage (e.g., removable and/or non-removable) including, but not limited to, magnetic storage, optical storage, and the like. Such additional storage is illustrated inFIG. 11by storage1110. In one embodiment, computer readable instructions to implement one or more embodiments provided herein may be in storage1110. Storage1110may also store other computer readable instructions to implement an operating system, an application program, and the like. Computer readable instructions may be loaded in memory1108for execution by processing unit1106, for example.

The term “computer readable media” as used herein includes computer-readable memory devices that exclude other forms of computer-readable media comprising communications media, such as signals. Such computer-readable memory devices may be volatile and/or nonvolatile, removable and/or non-removable, and may involve various types of physical devices storing computer readable instructions or other data. Memory1108and storage1110are examples of computer storage media. Computer-storage storage devices include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, Digital Versatile Disks (DVDs) or other optical storage, magnetic cassettes, magnetic tape, and magnetic disk storage or other magnetic storage devices.

Device1102may also include communication connection(s)1116that allows device1102to communicate with other devices. Communication connection(s)1116may include, but is not limited to, a modem, a Network Interface Card (NIC), an integrated network interface, a radio frequency transmitter/receiver, an infrared port, a USB connection, or other interfaces for connecting computing device1102to other computing devices. Communication connection(s)1116may include a wired connection or a wireless connection. Communication connection(s)1116may transmit and/or receive communication media.

Device1102may include input device(s)1114such as keyboard, mouse, pen, voice input device, touch input device, infrared cameras, video input devices, and/or any other input device. Output device(s)1112such as one or more displays, speakers, printers, and/or any other output device may also be included in device1102. Input device(s)1114and output device(s)1112may be connected to device1102via a wired connection, wireless connection, or any combination thereof. In one embodiment, an input device or an output device from another computing device may be used as input device(s)1114or output device(s)1112for computing device1102.

Those skilled in the art will realize that storage devices utilized to store computer readable instructions may be distributed across a network. For example, a computing device920accessible via network1118may store computer readable instructions to implement one or more embodiments provided herein. Computing device1102may access computing device1120and download a part or all of the computer readable instructions for execution. Alternatively, computing device1102may download pieces of the computer readable instructions, as needed, or some instructions may be executed at computing device1102and some at computing device1120.

G. USAGE OF TERMS

Any aspect or design described herein as an “example” is not necessarily to be construed as advantageous over other aspects or designs. Rather, use of the word “example” is intended to present one possible aspect and/or implementation that may pertain to the techniques presented herein. Such examples are not necessary for such techniques or intended to be limiting. Various embodiments of such techniques may include such an example, alone or in combination with other features, and/or may vary and/or omit the illustrated example.