Changeset 29797 in vbox for trunk/src/VBox/HostServices/GuestControl/service.cpp
- Timestamp:
- May 25, 2010 4:33:30 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/GuestControl/service.cpp
r29785 r29797 18 18 /** @page pg_svc_guest_control Guest Control HGCM Service 19 19 * 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). 21 52 */ 22 53
Note:
See TracChangeset
for help on using the changeset viewer.