Patent ID: 7984438
Filing Date: 2011-07-19
Classification: G06F

Abstract:
1. A computing device comprising: a hardware device employed to provide a hardware service to the computing device; a processor electrically coupled to said hardware device when said computing device is in an operational state; a memory electrically coupled to said processor when said computing device is in an operational state, said memory having stored thereon computer-executable instructions that in response to execution cause: a plurality of virtual machines to be instantiated on the computing device, each virtual machine for hosting an instance of an operating system upon which one or more applications may be instantiated, the virtual machines including: a host virtual machine (VM-H) to which the hardware device is assigned such that the VM-H can host and directly control such hardware device and can provide the hardware service of the hardware device therefrom; and a client virtual machine (VM-C), instantiated on the same computing device as the VM-H, that can access the VM-H and consume the hardware service of the hardware device as provided by such VM-H; and a virtualization layer for overseeing and managing the VM-H and VM-C, the VM-H including: a virtualization driver for receiving requests from the VM-C and initiating and performing hardware operations on behalf of the VM-C based on the requests; and a hardware stack for interfacing the virtualization driver with the hardware device and performing hardware operations with regard to the hardware device according to the requests received by the virtualization driver; the VM-C including: an application for transmitting a request for the hardware service of the hardware device; an emulating stack for interfacing the application with a trap in the virtualization layer of the computing device, the emulating stack for emulating performing of hardware operations with regard to the hardware device by way of the trap by transmitting the request of the application to the trap, whereby the virtualization layer re-directs the request received at the trap to the virtualization driver of the VM-H; and an enlightened stack for interfacing the application with the virtualization driver of the VM-H, the enlightened stack for effectuating performing of hardware operations with regard to the hardware device by way of the virtualization driver of the VM-H by transmitting the request of the application to the virtualization driver of the VM-H, whereby the enlightened stack bypasses the virtualization layer, the emulating stack including a shunt driver for shunting to the enlightened stack each request from the application directed to the emulating stack when the VM-C is in enlightened mode, wherein each stack includes a class driver and a port driver, wherein the shunt driver in the emulating stack is positioned between the class driver and the port driver of such emulating stack and shunts the request to the port driver of the enlightened stack, whereby the shunted request is further processed by the enlightened stack as if directed thereto by the application.