Signaling to I / O devices based on virtual computer messages
By establishing two data channels between the processor and the virtual computer, the problem of low interaction efficiency between the virtual computer and the physical I/O device is solved, dynamic control and notification of the I/O device is realized, and system interaction efficiency is improved.
Patent Information
- Application Number
- CN201880092142.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2018-04-27
- Publication Date
- 2024-12-10
- Estimated Expiration
- 2038-04-27
AI Technical Summary
The prior art is difficult to effectively establish an efficient input/output data channel between the virtual computer and the processor, resulting in low interaction efficiency between the virtual computer and the physical I/O device and unable to achieve dynamic control and notification of the I/O device.
By establishing two data channels between the processor and the virtual computer, one for passing input/output data and the other for passing output messages, including device category identifiers, identify and control I/O coupled to the processor device, providing an output signal to activate or change the device status.
It realizes efficient interaction between virtual computers and physical I/O devices, and can dynamically control and notify the status of I/O devices, such as activate light sources or play sounds, improving user experience and system interaction efficiency.
Smart Images

Figure CN111936971B_ABST
Abstract
Description
Background Art
[0001] The virtual computer simulates a computer and can run on a local computer or on a remote server. Input / output (I / O) data, such as from a keyboard or mouse, can be passed to the virtual computer to control the virtual computer. I / O data can be passed from the virtual computer, such as in the form of an image, for display on a monitor. BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Various examples will now be described with reference to the following figures:
[0003] Figure 1 shows a computer system and server running a remote desktop according to various examples;
[0004] Figure 2 A computer system with a keyboard is shown according to various examples;
[0005] Figure 3 A computer readable medium having machine readable instructions to be executed by a processor is shown according to various examples;
[0006] Figure 4 A method of establishing a data channel and receiving data through the data channel to provide to an I / O device according to various examples is shown;
[0007] Figure 5 A computer-readable medium having machine-readable instructions to be executed by a virtual computer is shown according to various examples;
[0008] Figure 6 A computer readable medium showing machine readable instructions to be executed by a processor according to various examples;
[0009] Figure 7 A method of establishing a data channel and receiving data through the data channel to provide to an I / O device according to various examples is shown; and
[0010] Figure 8 A computer-readable medium having machine-readable instructions to be executed by a virtual computer is shown according to various examples. DETAILED DESCRIPTION
[0011] In one example according to the present disclosure, an apparatus is provided. The apparatus includes a non-transitory computer-readable medium storing machine-readable instructions, which, when executed by a processor, causes the processor to: establish a first data channel between the processor and the virtual computer based on a connection between the processor and the virtual computer, the connection including a second data channel between the processor and the virtual computer, the second data channel transferring input / output (I / O) data between the processor and the virtual computer; receive an output message from the virtual computer via the first data channel; identify an I / O device coupled to the processor based on the output message; and provide an output signal to the I / O device, the output signal being based on the output message.
[0012] In one example according to the present disclosure, a method is provided. The method includes establishing a first data channel between a processor and a virtual computer based on a connection between the processor and the virtual computer, the connection including a second data channel between the processor and the virtual computer, the second data channel transferring input / output (I / O) data between the processor and the virtual computer; receiving an output message from the virtual computer via the first data channel, the output message including a device class identifier; identifying an I / O device coupled to the processor based on the device class identifier; and providing an output signal to the I / O device, the output signal being based on the output message.
[0013] In one example according to the present disclosure, a device is provided. The device includes a non-transitory computer-readable medium storing machine-readable instructions, which, when executed by a virtual computer, causes the virtual computer to: establish a first data channel between the virtual computer and the processor based on a connection between the virtual computer and the processor, the connection including a second data channel between the virtual computer and the processor, the second data channel transferring input / output (I / O) data between the virtual computer and the processor; detect an event at the virtual computer; and provide an output message to the processor via the first data channel based on the event.
[0014] Figure 1A computer system 110 and a server 130 running a remote desktop according to various examples are shown. The computer system 110 may include an I / O device such as a keyboard 120. The computer system 110 may include other I / O devices such as a mouse, a tracking ball, a microphone, a camera, a light pen, a joystick, a monitor, a sound system, a printer, a light source, a tactile device, a voice over Internet Protocol (VoIP) headset, or a custom I / O device. The I / O device may be coupled to the computer system via a universal serial bus (USB), Bluetooth, or another system. The I / O device may be removable from the computer system (such as a USB device) or built into the system (such as a button on a mobile phone or a tablet). The I / O device may include a button, a switch, a display, a light source, or other forms of input / output. For a display I / O device, if in a power saving mode, the screen may be activated, and graphic elements may be displayed and interacted with by, such as via a touch on a touch screen or using a mouse, a tracking ball, a stylus, or a similar I / O device. The server 130 may execute a virtual computer. The computer system 110 can establish a connection 140 to a virtual computer executing on the server 130. The computer system 110 can, for example, use the virtual computer on the server 130 to access a running remote desktop. The connection 140 can include a data channel that transfers I / O data, such as from the keyboard 120. Keyboard keys on the keyboard 120 can be transferred to the virtual computer executing on the server 130 via the data channel of the connection 140. The virtual computer can transfer images to the computer system 110 for display on a monitor and transfer sounds to be played through speakers via the data channel of the connection 140. The computer system 110 can be a laptop computer, a desktop computer, a mobile phone, a tablet, or other computer system.
[0015] Computer system 110 can establish data channel 150 based on connection 140. Data channel 150 can be called a first data channel, and the data channel of connection 140 can be called a second data channel. Data channel 150 can transfer I / O data between computer system 110 and virtual computers on server 130. I / O data transferred via data channel 150 can overlap with I / O data transferred through the data channel of connection 140. I / O data transferred via data channel 150 can be appended to I / O data transferred through the data channel of connection 140. Pressing a key on keyboard 120 (such as "Q," "J," or "Z") can cause corresponding I / O data to be transferred through the data channel of connection 140. The virtual computer on server 130 can provide output messages to computer system 110 via data channel 150 to illuminate a light source on keyboard 120, such as a light indicating the presence of a new email, or the output message can be used to change the color or intensity of the backlight of the backlit keyboard.
[0016] Computer system 110 may include an application that interfaces with I / O devices and data channels 150. As used herein, applications are intended to include programs, services, daemons, device drivers, libraries, executables, and other collections of machine-readable instructions. Applications may detect that a connection 140 has been established between computer system 110 and a virtual computer such as a virtual computer executed on server 130. Based on the detection of connection 140, computer system 110 may establish data channels 150 between the computer system and the virtual computer. The data channel of connection 140 and data channel 150 may transmit both input and output messages corresponding to the I / O device or even transmit to the same I / O device. The virtual computer on server 130 may include an application that interfaces with data channels 150. The application of the virtual computer may detect an event at the virtual computer and provide output messages to computer system 110 via data channels 150 for interacting with the I / O device. The application of the computer system may process those output messages. For example, if an application on a virtual computer detects that a new email exists, the application on the virtual computer may provide a corresponding output message via data channel 150. The application of the computer system can receive the output message and process the output message to identify the request to perform the I / O operation. The application of the computer system can cause the computer system 110 to activate the light source, play a sound, or cause the tactile device to vibrate. Activating the light source can mean turning the light source on, and deactivating the light source can mean turning the light source off. In various examples, a virtual computer can be executed on a server 130 that is located away from the computer system 110 or close to the computer system 110. The virtual computer can be executed on the computer system 110, and the data channel can be operated via process or function calls between various applications or exchanged through TCP / IP. The virtual computer can be a virtual machine.
[0017] Figure 2A computer system 200 with a keyboard 250 is shown according to various examples. The computer system 200 may include a processor 210, a main memory 220, a network interface connector 230, a storage 240, a keyboard 250, and a bus connector 270. The processor 210 may include a microprocessor, a microcomputer, a controller, a field programmable gate array (FPGA), or discrete logic that executes machine-readable instructions. The main memory 220 may include a random access memory (RAM) such as a dynamic RAM (DRAM) or a static RAM (SRAM), a flash memory, or an electrically erasable programmable read-only memory (EEPROM). The network interface connector 230 may include a network device to provide an Ethernet connection, a wireless connection, or other connections. The network interface connector 230 may enable access to a private enterprise network. The network interface connector 230 may enable access to the Internet. The storage 240 may include a non-volatile or long-term storage for data or machine-readable instructions, such as a hard disk drive, a solid-state drive (SSD), a flash memory, or an EEPROM. The processor 210, the main memory 220, the network interface connector 230, the storage 240, and the bus connector 270 may be coupled together, such as by a bus. The storage 240 may include machine-readable instructions 242, 244, 246 to be executed by the processor 210. The main memory 220 may act as a cache for data transferred between the storage 250 and the processor 210. The processor 210 may communicate messages over a data channel via the network interface connector 230.
[0018] Computer system 200 may include processor 210 coupled to I / O devices such as keyboard 250. Computer system 200 may be a server executing a virtual computer.
[0019] The keyboard 250 may be coupled to the processor 210 via a bus connector 270. The bus connector 270 may be a serial bus connector, a USB connector, or other connector, allowing peripheral devices or I / O devices to be connected to the processor 210. The keyboard 250 may include individual keys representing alphanumeric or special characters. The keyboard 250 may include an email button 260 having a light source. When operating in a local mode, the computer system 200 may detect when a new email exists and activate the light source for the email button 260. When the email application is opened, the computer system 200 may deactivate the light source for the email button 260. When the local computer system 200 is connected to the virtual computer, the virtual computer may not pass a command to the computer system 200 to activate or deactivate the light source for the email button 260. The command may not be passed via the second data channel, because the connection between the local computer system 200 and the virtual computer and its second data channel may not process such an I / O command. For example, the connection may process I / O data, such as sending back a screenshot to be displayed on a monitor, instead of activating a light source such as a light source indicating the presence of a new email. The computer system 200 may execute an application including machine readable instructions 242, machine readable instructions 244, and machine readable instructions 246. The machine readable instructions 242, when executed, may cause the processor 210 to establish a data channel, such as a data channel between the processor 210 and the virtual computer. The machine readable instructions 244, when executed, may cause the processor 210 to receive an output message from the virtual computer via the data channel based on the detection of a new email. The machine readable instructions 244, when executed, may cause the processor 210 to activate a light source of an email button to indicate the presence of a new email. For example, the computer system may process such an output message based on the output message from the virtual computer and activate or deactivate the light source for the email button 260. The virtual computer may execute an application that detects such an event and provides such an output message.
[0020] Figure 3A computer readable medium 300 having machine readable instructions 310, machine readable instructions 320, machine readable instructions 330, and machine readable instructions 340 to be executed by a processor according to various examples is shown. The computer readable medium 300 may be a storage device such as a hard disk drive, a solid state drive (SSD), a flash memory, or an EEPROM. When the machine readable instructions 310 are executed, the processor may establish a first data channel between the processor and the virtual computer based on a connection between the processor and the virtual computer, the connection including a second data channel between the processor and the virtual computer, the second data channel transmitting input / output (I / O) data between the processor and the virtual computer. When the machine readable instructions 320 are executed, the processor may receive an output message from the virtual computer via the first data channel. When the machine readable instructions 330 are executed, the processor may identify an I / O device coupled to the processor based on the output message. When the machine readable instructions 340 are executed, the processor may provide an output signal to the I / O device based on the output message.
[0021] Machine readable instructions 310, machine readable instructions 320, machine readable instructions 330, and machine readable instructions 340 may be part of an application to be executed by a processor. The application may detect a connection between the processor and a virtual computer. The application may detect a connection by monitoring processes and services running on a computer system and identifying which processes or services may establish such a connection. If a connection exists, the application may detect the connection by querying another application. The application may detect a connection by monitoring a notification system that provides a notification when such a connection is created. The application may detect a connection by analyzing the title bar of a window or the contents of the window. For example, a title bar or window may include an indication of such a connection, such as "connected to" followed by a TCP / IP address. The application may also monitor network traffic to detect a connection or determine how to connect to a remote virtual computer (such as through a specific TCP / IP address). The application may also establish a connection based on interaction with a user (such as a TCP / IP address specified by the user to connect to). In various examples, the connection between the processor and the virtual computer may allow the creation of a data channel. The application may create and use a data channel through the connection.
[0022] An application may register with a device driver or other application to provide an output signal to an I / O device. The output signal may be in the form of a notification of an event that the I / O device can handle. The application may create an output signal based on the receipt of an output message to provide to the I / O device. Based on the details of the specific data channel established, the format of the input message may be different. The output message may include a device class identifier corresponding to the I / O device, an indication of what event occurred, and a timestamp indicating when the event occurred. The application may process the output message to determine what action is to be performed by the I / O device. The output message device class identifier and the action to be performed by the I / O device, such as the action of identifying a light source and activating the light source. The application may be part of a device driver stack or have a corresponding component that is part of a device driver stack. The device class identifier may identify the class of the device, such as a sound system or light source or device with the ability to play sound or provide lighting. In various examples, the device class identifier may correspond to all devices that perform illumination to indicate the presence of a new email or to all devices that perform illumination. The output message may include a device identifier. For example, a computer system may include multiple light sources. One light source may indicate the presence of a new email and another indicates whether a Voice over Internet Protocol (VoIP) call is occurring. An output message may specify which light source should be activated or deactivated. An I / O device may have multiple similar or separate elements capable of output. A keyboard may include a light source to indicate the presence of a new email and another light source to indicate that a VoIP call is occurring. An output message may include data identifying a specific element or function of an I / O device. An output message may include a device identifier to identify a specific I / O device.
[0023] Figure 4 A method 300 of establishing a data channel and receiving data through the data channel to provide to an I / O device according to various examples is shown. The method 400 may include establishing a first data channel between the processor and the virtual computer based on a connection between the processor and the virtual computer, the connection including a second data channel between the processor and the virtual computer, the second data channel passing input / output (I / O) data between the processor and the virtual computer 410. The method 400 may include receiving an output message from the virtual computer via the first data channel, the output message including a device class identifier 420. The method 400 may include identifying an I / O device coupled to the processor based on the device class identifier 430. The method 400 may include providing an output signal to the I / O device, the output signal based on the output message 440.
[0024] Figure 5A computer readable medium 500 having machine readable instructions 510, machine readable instructions 520, and machine readable instructions 530 to be executed by a virtual computer according to various examples is shown. The machine readable instructions 510, when executed, may cause the virtual computer to establish a first data channel between the virtual computer and the processor based on a connection between the virtual computer and the processor, the connection including a second data channel between the virtual computer and the processor, the second data channel passing input / output (I / O) data between the processor and the virtual computer. The machine readable instructions 520, when executed, may cause the virtual computer to detect an event at the virtual computer. The machine readable instructions 530, when executed, may cause the virtual computer to: provide an output message to the processor via the first data channel based on the event.
[0025] Machine readable instructions 510, 520, 530 may be part of an application to be executed by a virtual computer. To establish a first data channel, the application may monitor the communication between the virtual computer and the processor, and wait for a request from the processor to establish a connection. The application on the virtual computer may initiate a connection request.
[0026] When an event is detected, an application at the virtual computer can register for event notifications from the operating system or the application. For example, an application at the virtual computer can register with an email application to receive notifications, such as when a new email exists. An application can register with a VoIP application to receive notifications when a call is incoming or a call ends. An application can register with an application to receive notifications when headlines or videos about news or video feeds are available. An application can register with the operating system to receive notifications when high priority updates are available. An application can register with a stand-alone application or can register with an event service available on the virtual computer. An event service can aggregate notifications from multiple sources.
[0027] The application at the virtual computer can detect events by analyzing a user interface similar to user interface automation. For example, a graphical user interface can be analyzed to determine which application windows are open and what appears. The application at the virtual computer can identify the window as a corresponding VoIP application and identify an interface object indicating when a call is incoming. The application at the virtual computer can analyze the appearance of the interface object to determine whether an event occurs, such as an interface object indicating an incoming call.
[0028] Figure 6A computer readable medium 600 having machine readable instructions 610, 620, 630, 640, 650, 660, and 670 to be executed by a processor is shown according to various examples. The machine readable instructions 610, when executed, may cause the processor to establish a first data channel between the processor and the virtual computer based on a connection between the processor and the virtual computer, the connection including a second data channel between the processor and the virtual computer, the second data channel transferring input / output (I / O) data between the processor and the virtual computer. The machine readable instructions 620, when executed, may cause the processor to receive an output message from the virtual computer via the first data channel. The machine readable instructions 630, when executed, may cause the processor to identify an I / O device coupled to the processor based on the output message. The machine readable instructions 640, when executed, may cause the processor to provide an output signal to the I / O device, the output signal being based on the output message, the output signal to the I / O device causing the I / O device to activate a light source. The machine-readable instructions 650, when executed, may cause the processor to execute the virtual computer. The machine-readable instructions 660, when executed, may cause the processor to receive a response from the I / O device based on the output signal. The machine-readable instructions 670, when executed, may cause the processor to provide a response message to the virtual computer via the first data channel based on the response.
[0029] In various examples, the virtual computer may be executed on the processor rather than on a remote server.The data channel may include function or process calls on the virtual computer for passing data between the processor and the virtual computer executed by the processor.
[0030] Figure 7A method 700 of establishing a data channel and receiving data through the data channel to provide to an I / O device according to various examples is shown. The method 700 may include establishing a first data channel between a processor and a virtual computer (including communicating via a network interface) based on a connection between the processor and the virtual computer, the connection including a second data channel between the processor and the virtual computer, the second data channel transferring input / output (I / O) data between the processor and the virtual computer 710. The method 700 may include receiving an output message from the virtual computer via the first data channel, the output message including a device class identifier 720. The method 700 may include identifying an I / O device coupled to the processor based on the device class identifier 730. The method 700 may include providing an output signal to the I / O device, the output signal based on the output message 740. The method 700 may include providing a second output signal to a second I / O device, the second output signal based on the output message 750. The method 700 may include receiving an input signal from the I / O device, wherein the input signal causes data to be transferred via the second data channel 760. The method 700 may include providing 770 an event message to an event notification system based on the output message.
[0031] The connection may include both a first data channel and a second data channel. The connection may be established first. The second data channel may be established as part of establishing the connection or after establishing the connection. The first data channel may be established later after the connection is detected. The first data channel may be established by using a function of the connection that establishes the first data channel. For example, the connection may utilize a remote desktop application that may allow the creation of a virtual channel for passing data. The first data channel may be established by creating a virtual channel via the remote desktop application.
[0032] The processor may send a response to the virtual computer after receiving the output message. The response may be a confirmation of receipt of the output message together with an error message or a status of success, failure, or processing of the output message. If such a confirmation is not received, the virtual computer may provide the output message to the processor at another time. If the response indicates an error, the virtual computer may record the error message in an error log.
[0033] The output message may cause an action to be taken with respect to a plurality of I / O devices. For example, if the output message indicates that a new email exists, the processor may cause a light source for an email button on the keyboard to activate and also play a sound such as a chime through the sound system. The output message may specify that two actions are taken. In various examples, the output message may indicate that a new email exists, and an application executed by the processor may process the output message and determine that an output signal should be provided to a plurality of I / O devices.
[0034] Applications executed by the processor may cause event notifications based on outgoing messages. For example, when a VoIP call is incoming, the processor may provide an event notification. Other applications such as a call recording application may register to be notified of such events. The application may provide notifications of such events to registered applications or to an event system that aggregates and provides event notifications.
[0035] In various examples, the receipt of an outgoing message may cause the receipt of an incoming signal from an I / O device and the transfer of data via a second data channel. For example, a processor may receive an outgoing message via a first data channel of an incoming VoIP call. The processor may cause a sound to be played and a light source to be activated. A user may press a button to accept a VoIP call, causing the I / O device to provide a signal to the processor. The processor may provide an incoming message via a first data channel to accept a VoIP call. The processor and the virtual computer may use a second data channel to transfer a voice signal and a video signal for a VoIP call. The processor and the virtual computer may use a third data channel to transfer a voice signal and a video signal for a VoIP call.
[0036] Figure 8 A computer-readable medium 800 having machine-readable instructions 810, 820, 825, 830, 840 to be executed by a virtual computer is shown according to various examples. The machine-readable instructions 810, when executed, may cause the virtual computer to establish a first data channel between the virtual computer and the processor based on a connection between the virtual computer and the processor, the connection including a first data channel and a second data channel between the virtual computer and the processor, the second data channel transferring input / output (I / O) data between the virtual computer and the processor. The machine-readable instructions 820, when executed, may cause the virtual computer to detect an event at the virtual computer. The machine-readable instructions 825, when executed, may cause the virtual computer to receive a device class identifier from the processor via the first data channel, the device class identifier corresponding to an I / O device coupled to the processor. The machine-readable instructions 830, when executed, may cause the virtual computer to provide an output message including a device class identifier to the processor via the first data channel based on the event. The machine-readable instructions 840, when executed, may cause the virtual computer to register to receive event notifications from an application.
[0037] The virtual computer may have an event notification system for notifying applications of system events or events from other applications. Events may include session closure, opening or closing an application, switching of window focus, availability of new emails, incoming VoIP calls, the start or end of a VoIP call, or various other events. Independent applications may have an event notification system. The virtual computer may execute an application that monitors applications (even if the application does not have an event notification system). For example, the virtual computer may monitor network traffic associated with an application to determine the occurrence of an event, such as starting or ending a VoIP call. The virtual computer may analyze the UI to detect when a new video or news headline is added to a web page that displays recent videos or news articles.
[0038] The processor can provide the virtual computer with a set of I / O devices that the processor can access. For example, the processor can indicate that it has a keyboard that uses a light source to indicate the existence of a new email, a tactile device that can vibrate, a sound system for headphones, and a sound system for speakers. The virtual computer can send output messages destined for specific devices. The processor can indicate the I / O device category or I / O device function. For example, the processor can indicate that it has the ability to play sounds, but does not have the ability to identify how many sound systems. The processor can indicate that it has a light source that indicates the existence of a new email but does not indicate that it corresponds to any specific I / O device.
[0039] In various examples, the processor can change its interaction with the I / O device based on the output message and other factors. For example, the output message can indicate that a new email exists. If the sound system is used for a VoIP call, playing music, or playing a video, the processor can decide to activate the light source or flash the light source. If the sound system is not used for a VoIP call, playing music, or playing a video, the sound system can play a chime sound. If the user has set the computer system to silent mode, the processor can vibrate the haptic device instead of playing a sound.
[0040] In various examples, the connection to the virtual computer can be a connection to a remote desktop running on a remote server. The local computer system can open multiple windows, and the remote desktop window may not have focus. The processor can receive output messages when the remote desktop window does not have focus and provide output signals to the I / O device. The processor can make the remote desktop window get focus (focus), bringing it to the forefront of the local user interface. The virtual computer can bring the window corresponding to the event to the forefront of its user interface and give the window focus. When the remote desktop window does not have focus, the processor may not send output signals to the I / O device based on the output message from the virtual computer or the processor may send specific output signals to the I / O device.
[0041] The above discussion is intended to illustrate the principles and various examples of the present disclosure. Once the above disclosure is fully understood, many changes and modifications will become apparent to those skilled in the art. The appended claims are intended to be understood to include all such changes and modifications.
Claims
1. A non-transitory computer readable medium storing machine readable instructions which, when executed by a processor, cause the processor to: establishing a first data channel between the processor and the virtual computer in response to detecting a connection between the processor and the virtual computer, the connection comprising a second data channel between the processor and the virtual computer, the second data channel communicating input / output (I / O) data between the processor and the virtual computer, the first data channel being established as part of the connection such that the connection comprises the first data channel and the second data channel; receiving an output message from the virtual computer via the first data channel; identifying an I / O device coupled to the processor based on the output message; and An output signal is provided to the I / O device, the output signal being based on the output message.
2. The non-transitory computer-readable medium of claim 1, wherein: The output signal to the I / O device is used to cause the I / O device to activate a light source.
3. The non-transitory computer readable medium of claim 2, wherein: The I / O device includes a keyboard.
4. The non-transitory computer-readable medium of claim 1, wherein: The processor is configured to execute the virtual computer.
5. The non-transitory computer readable medium of claim 1, wherein: The machine-readable instructions, when executed by the processor, cause the processor to: receiving a response from the I / O device based on the output signal; and Based on the response, a response message is provided to the virtual computer via the first data channel.
6. A method comprising: establishing a first data channel between the processor and the virtual computer in response to detecting a connection between the processor and the virtual computer, the connection comprising a second data channel between the processor and the virtual computer, the second data channel communicating input / output (I / O) data between the processor and the virtual computer, the first data channel being established as part of the connection such that the connection comprises the first data channel and the second data channel; receiving an output message from the virtual computer via the first data channel, the output message including a device class identifier identifying a device class; identifying an I / O device coupled to the processor based on the device class identifier, wherein the I / O device is included in the device class; and An output signal is provided to the I / O device, the output signal being based on the output message. 7 . The method of claim 6 , further comprising providing a second output signal to a second I / O device, the second output signal being based on the output message.
8. The method of claim 6, further comprising receiving an input signal from the I / O device, wherein: The input signal is used to cause data to be transferred via the second data channel.
9. The method of claim 6, further comprising providing an event message to an event notification system based on the output message.
10. The method according to claim 6, wherein: Establishing the first data channel includes communicating via a network interface.
11. A non-transitory computer-readable medium storing machine-readable instructions that, when executed by a virtual computer, cause the virtual computer to: establishing a first data channel between the virtual computer and the processor in response to detecting a connection between the virtual computer and the processor, the connection comprising a second data channel between the virtual computer and the processor, the second data channel communicating input / output (I / O) data between the virtual computer and the processor, the first data channel being established as part of the connection such that the connection comprises the first data channel and the second data channel; detecting an event at the virtual computer; and Based on the event, an output message is provided to the processor via the first data channel.
12. The non-transitory computer readable medium of claim 11, wherein: The machine-readable instructions, when executed by the virtual computer, cause the virtual computer to register to receive event notifications from an application.
13. The non-transitory computer readable medium of claim 11, wherein: The machine-readable instructions, when executed by the virtual computer, cause the virtual computer to receive a device class identifier from the processor via the first data channel, the device class identifier corresponding to an I / O device coupled to the processor.
14. The non-transitory computer readable medium of claim 13, wherein: The outgoing message includes the device class identifier.
15. A computer program product comprising a computer program which, when executed by a processor, causes the processor to perform the method according to any one of claims 6 to 10.
