VirtualBox

Ignore:
Timestamp:
Apr 21, 2016 1:00:20 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106770
Message:

Guest Control: Added proper handling for (VBoxService) toolbox exit codes, resolving various copyto/copyfrom bugs.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/HostServices/GuestControlSvc.h

    r57753 r60622  
     1/* $Id$ */
    12/** @file
    23 * Guest control service - Common header for host service and guest clients.
     
    45
    56/*
    6  * Copyright (C) 2011-2015 Oracle Corporation
     7 * Copyright (C) 2011-2016 Oracle Corporation
    78 *
    89 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    8283
    8384/**
    84  * Process status when executed in the guest.
    85  */
    86 enum eProcessStatus
    87 {
    88     /** Process is in an undefined state. */
    89     PROC_STS_UNDEFINED = 0,
    90     /** Process has been started. */
    91     PROC_STS_STARTED = 1,
    92     /** Process terminated normally. */
    93     PROC_STS_TEN = 2,
    94     /** Process terminated via signal. */
    95     PROC_STS_TES = 3,
    96     /** Process terminated abnormally. */
    97     PROC_STS_TEA = 4,
    98     /** Process timed out and was killed. */
    99     PROC_STS_TOK = 5,
    100     /** Process timed out and was not killed successfully. */
    101     PROC_STS_TOA = 6,
    102     /** Service/OS is stopping, process was killed. */
    103     PROC_STS_DWN = 7,
    104     /** Something went wrong (error code in flags). */
    105     PROC_STS_ERROR = 8
    106 };
    107 
    108 /** @todo r=bird: Most defines in this file needs to be scoped a little
    109  *        better!  For instance INPUT_FLAG_NONE is very generic. */
    110 
    111 /**
    112  * Input flags, set by the host. This is needed for
    113  * handling flags on the guest side.
    114  * Note: Has to match Main's ProcessInputFlag_* flags!
    115  */
    116 #define INPUT_FLAG_NONE                     0x0
    117 #define INPUT_FLAG_EOF                      RT_BIT(0)
    118 
    119 /**
    120  * Guest session creation flags.
    121  * Only handled internally at the moment.
    122  */
    123 #define SESSIONCREATIONFLAG_NONE            0x0
    124 
    125 /**
    126  * Guest directory removement flags.
    127  * Essentially using what IPRT's RTDIRRMREC_F_
    128  * defines have to offer.
    129  */
    130 #define DIRREMOVE_FLAG_RECURSIVE            RT_BIT(0)
    131 /** Delete the content of the directory and the directory itself. */
    132 #define DIRREMOVE_FLAG_CONTENT_AND_DIR      RT_BIT(1)
    133 /** Only delete the content of the directory, omit the directory it self. */
    134 #define DIRREMOVE_FLAG_CONTENT_ONLY         RT_BIT(2)
    135 /** Mask of valid flags. */
    136 #define DIRREMOVE_FLAG_VALID_MASK           UINT32_C(0x00000003)
    137 
    138 /** @name EXECUTEPROCESSFLAG_XXX Guest process creation flags.
    139  * @note Has to match Main's ProcessCreateFlag_* flags!
    140  */
    141 #define EXECUTEPROCESSFLAG_NONE             UINT32_C(0x0)
    142 #define EXECUTEPROCESSFLAG_WAIT_START       RT_BIT(0)
    143 #define EXECUTEPROCESSFLAG_IGNORE_ORPHANED  RT_BIT(1)
    144 #define EXECUTEPROCESSFLAG_HIDDEN           RT_BIT(2)
    145 #define EXECUTEPROCESSFLAG_NO_PROFILE       RT_BIT(3) /** @todo Rename to EXECUTEPROCESSFLAG_PROFILE in next API change. */
    146 #define EXECUTEPROCESSFLAG_WAIT_STDOUT      RT_BIT(4)
    147 #define EXECUTEPROCESSFLAG_WAIT_STDERR      RT_BIT(5)
    148 #define EXECUTEPROCESSFLAG_EXPAND_ARGUMENTS RT_BIT(6)
    149 #define EXECUTEPROCESSFLAG_UNQUOTED_ARGS    RT_BIT(7)
    150 /** @} */
    151 
    152 /**
    153  * Pipe handle IDs used internally for referencing to
    154  * a certain pipe buffer.
    155  */
    156 #define OUTPUT_HANDLE_ID_STDOUT_DEPRECATED  0 /* Needed for VBox hosts < 4.1.0. */
    157 #define OUTPUT_HANDLE_ID_STDOUT             1
    158 #define OUTPUT_HANDLE_ID_STDERR             2
    159 
    160 /**
    161  * Guest path rename flags.
    162  * Essentially using what IPRT's RTPATHRENAME_FLAGS_
    163  * defines have to offer.
    164  */
    165 /** Do not replace anything. */
    166 #define PATHRENAME_FLAG_NO_REPLACE          UINT32_C(0)
    167 /** This will replace attempt any target which isn't a directory. */
    168 #define PATHRENAME_FLAG_REPLACE             RT_BIT(0)
    169 /** Don't allow symbolic links as part of the path. */
    170 #define PATHRENAME_FLAG_NO_SYMLINKS         RT_BIT(1)
    171 /** Mask of valid flags. */
    172 #define PATHRENAME_FLAG_VALID_MASK          UINT32_C(0x00000002)
    173 
    174 /**
    175  * Defines for guest process array lengths.
    176  */
    177 #define GUESTPROCESS_MAX_CMD_LEN            _1K
    178 #define GUESTPROCESS_MAX_ARGS_LEN           _1K
    179 #define GUESTPROCESS_MAX_ENV_LEN            _64K
    180 #define GUESTPROCESS_MAX_USER_LEN           128
    181 #define GUESTPROCESS_MAX_PASSWORD_LEN       128
    182 #define GUESTPROCESS_MAX_DOMAIN_LEN         256
    183 
    184 /** @name Internal tools built into VBoxService which are used in order to
    185  *        accomplish tasks host<->guest.
    186  * @{
    187  */
    188 #define VBOXSERVICE_TOOL_CAT        "vbox_cat"
    189 #define VBOXSERVICE_TOOL_LS         "vbox_ls"
    190 #define VBOXSERVICE_TOOL_RM         "vbox_rm"
    191 #define VBOXSERVICE_TOOL_MKDIR      "vbox_mkdir"
    192 #define VBOXSERVICE_TOOL_MKTEMP     "vbox_mktemp"
    193 #define VBOXSERVICE_TOOL_STAT       "vbox_stat"
    194 /** @} */
    195 
    196 /**
    197  * Input status, reported by the client.
    198  */
    199 enum eInputStatus
    200 {
    201     /** Input is in an undefined state. */
    202     INPUT_STS_UNDEFINED = 0,
    203     /** Input was written (partially, see cbProcessed). */
    204     INPUT_STS_WRITTEN = 1,
    205     /** Input failed with an error (see flags for rc). */
    206     INPUT_STS_ERROR = 20,
    207     /** Process has abandoned / terminated input handling. */
    208     INPUT_STS_TERMINATED = 21,
    209     /** Too much input data. */
    210     INPUT_STS_OVERFLOW = 30
    211 };
    212 
    213 /**
    21485 * Structure keeping the context of a host callback.
    21586 */
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