VirtualBox

Ignore:
Timestamp:
May 25, 2010 4:33:30 PM (15 years ago)
Author:
vboxsync
Message:

Guest Control: Documentation for internals.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/GuestControl/service.cpp

    r29785 r29797  
    1818/** @page pg_svc_guest_control   Guest Control HGCM Service
    1919 *
    20  * @todo Write up some nice text here.
     20 * This service acts as a proxy for handling and buffering host command requests
     21 * and clients on the guest. It tries to be as transparent as possible to let
     22 * the guest (client) and host side do their protocol handling as desired.
     23 *
     24 * The following terms are used:
     25 * - Host:   A host process (e.g. VBoxManage or another tool utilizing the Main API)
     26 *           which wants to control something on the guest.
     27 * - Client: A client (e.g. VBoxService) running inside the guest OS waiting for
     28 *           new host commands to perform. There can be multiple clients connected
     29 *           to a service. A client is represented by its HGCM client ID.
     30 * - Context ID: A (almost) unique ID automatically generated on the host (Main API)
     31 *               to not only distinguish clients but individual requests. Because
     32 *               the host does not know anything about connected clients it needs
     33 *               an indicator which it can refer to later. This context ID gets
     34 *               internally bound by the service to a client which actually processes
     35 *               the command in order to have a relationship between client<->context ID(s).
     36 *
     37 * The host can trigger commands which get buffered by the service (with full HGCM
     38 * parameter info). As soon as a client connects (or is ready to do some new work)
     39 * it gets a buffered host command to process it. This command then will be immediately
     40 * removed from the command list. If there are ready clients but no new commands to be
     41 * processed, these clients will be set into a deferred state (that is being blocked
     42 * to return until a new command is available).
     43 *
     44 * If a client needs to inform the host that something happend, it can send a
     45 * message to a low level HGCM callback registered in Main. This callback contains
     46 * the actual data as well as the context ID to let the host do the next necessary
     47 * steps for this context. This context ID makes it possible to wait for an event
     48 * inside the host's Main API function (like starting a process on the guest and
     49 * wait for getting its PID returned by the client) as well as cancelling blocking
     50 * host calls in order the client terminated/crashed (HGCM detects disconnected
     51 * clients and reports it to this service's callback).
    2152 */
    2253
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette