VirtualBox

Changeset 70058 in vbox


Ignore:
Timestamp:
Dec 11, 2017 3:02:07 PM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
119600
Message:

GuestPropertySvc.h: Working on making it usable from C (VBoxGuest, ++)

Location:
trunk
Files:
11 edited

Legend:

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

    r69107 r70058  
    3535#include <iprt/string.h>
    3636
    37 /** Everything defined in this file lives in this namespace. */
    38 namespace guestProp {
    39 
    40 /******************************************************************************
    41 * Typedefs, constants and inlines                                             *
    42 ******************************************************************************/
    4337
    4438/** Maximum length for property names */
    45 enum { MAX_NAME_LEN = 64 };
     39#define GUEST_PROP_MAX_NAME_LEN             64
    4640/** Maximum length for property values */
    47 enum { MAX_VALUE_LEN = 128 };
     41#define GUEST_PROP_MAX_VALUE_LEN            128
    4842/** Maximum number of properties per guest */
    49 enum { MAX_PROPS = 256 };
     43#define GUEST_PROP_MAX_PROPS                256
    5044/** Maximum size for enumeration patterns */
    51 enum { MAX_PATTERN_LEN = 1024 };
     45#define GUEST_PROP_MAX_PATTERN_LEN          1024
    5246/** Maximum number of changes we remember for guest notifications */
    53 enum { MAX_GUEST_NOTIFICATIONS = 256 };
    54 
    55 /**
    56  * The guest property flag values which are currently accepted.
    57  */
    58 enum ePropFlags
    59 {
    60     NILFLAG          = 0,
    61     /** Transient until VM gets shut down. */
    62     TRANSIENT        = RT_BIT(1),
    63     RDONLYGUEST      = RT_BIT(2),
    64     RDONLYHOST       = RT_BIT(3),
    65     /** Transient until VM gets a reset / restarts.
    66      *  Implies TRANSIENT. */
    67     TRANSRESET       = RT_BIT(4),
    68     READONLY         = RDONLYGUEST | RDONLYHOST,
    69     ALLFLAGS         = TRANSIENT | READONLY | TRANSRESET
    70 };
     47#define GUEST_PROP_MAX_GUEST_NOTIFICATIONS  256
     48
     49
     50/** @name GUEST_PROP_F_XXX - The guest property flag values which are currently accepted.
     51 * @{
     52 */
     53#define GUEST_PROP_F_NILFLAG          UINT32_C(0)
     54/** Transient until VM gets shut down. */
     55#define GUEST_PROP_F_TRANSIENT        RT_BIT_32(1)
     56#define GUEST_PROP_F_RDONLYGUEST      RT_BIT_32(2)
     57#define GUEST_PROP_F_RDONLYHOST       RT_BIT_32(3)
     58/** Transient until VM gets a reset / restarts.
     59 *  Implies TRANSIENT. */
     60#define GUEST_PROP_F_TRANSRESET       RT_BIT_32(4)
     61#define GUEST_PROP_F_READONLY         (GUEST_PROP_F_RDONLYGUEST | GUEST_PROP_F_RDONLYHOST)
     62#define GUEST_PROP_F_ALLFLAGS         (GUEST_PROP_F_TRANSIENT | GUEST_PROP_F_READONLY | GUEST_PROP_F_TRANSRESET)
     63/** @} */
    7164
    7265/**
     
    7669 *                 list.
    7770 */
    78 DECLINLINE(const char *) flagName(uint32_t fFlag)
     71DECLINLINE(const char *) GuestPropFlagName(uint32_t fFlag)
    7972{
    8073    switch (fFlag)
    8174    {
    82         case TRANSIENT:
     75        case GUEST_PROP_F_TRANSIENT:
    8376            return "TRANSIENT";
    84         case RDONLYGUEST:
     77        case GUEST_PROP_F_RDONLYGUEST:
    8578            return "RDONLYGUEST";
    86         case RDONLYHOST:
     79        case GUEST_PROP_F_RDONLYHOST:
    8780            return "RDONLYHOST";
    88         case READONLY:
     81        case GUEST_PROP_F_READONLY:
    8982            return "READONLY";
    90         case TRANSRESET:
     83        case GUEST_PROP_F_TRANSRESET:
    9184            return "TRANSRESET";
    9285        default:
     
    10295 *                 list.
    10396 */
    104 DECLINLINE(size_t) flagNameLen(uint32_t fFlag)
    105 {
    106     const char *pcszName = flagName(fFlag);
     97DECLINLINE(size_t) GuestPropFlagNameLen(uint32_t fFlag)
     98{
     99    const char *pcszName = GuestPropFlagName(fFlag);
    107100    return RT_LIKELY(pcszName != NULL) ? strlen(pcszName) : 0;
    108101}
     
    112105 * RDONLYGUEST, RDONLYHOST and RDONLY
    113106 */
    114 enum { MAX_FLAGS_LEN = sizeof("TRANSIENT, RDONLYGUEST, TRANSRESET") };
     107#define GUEST_PROP_MAX_FLAGS_LEN    sizeof("TRANSIENT, RDONLYGUEST, TRANSRESET")
    115108
    116109/**
    117110 * Parse a guest properties flags string for flag names and make sure that
    118111 * there is no junk text in the string.
     112 *
    119113 * @returns  IPRT status code
    120  * @returns  VERR_INVALID_PARAM if the flag string is not valid
     114 * @retval   VERR_INVALID_PARAMETER if the flag string is not valid
    121115 * @param    pcszFlags  the flag string to parse
    122116 * @param    pfFlags    where to store the parse result.  May not be NULL.
     
    125119 *           its own library.
    126120 */
    127 DECLINLINE(int) validateFlags(const char *pcszFlags, uint32_t *pfFlags)
     121DECLINLINE(int) GuestPropValidateFlags(const char *pcszFlags, uint32_t *pfFlags)
    128122{
    129123    static const uint32_t s_aFlagList[] =
    130124    {
    131         TRANSIENT, READONLY, RDONLYGUEST, RDONLYHOST, TRANSRESET
     125        GUEST_PROP_F_TRANSIENT, GUEST_PROP_F_READONLY, GUEST_PROP_F_RDONLYGUEST, GUEST_PROP_F_RDONLYHOST, GUEST_PROP_F_TRANSRESET
    132126    };
    133127    const char *pcszNext = pcszFlags;
     
    144138            unsigned i = 0;
    145139            for (; i < RT_ELEMENTS(s_aFlagList); ++i)
    146                 if (RTStrNICmp(pcszNext, flagName(s_aFlagList[i]),
    147                                flagNameLen(s_aFlagList[i])) == 0)
     140                if (RTStrNICmp(pcszNext, GuestPropFlagName(s_aFlagList[i]), GuestPropFlagNameLen(s_aFlagList[i])) == 0)
    148141                    break;
    149142            if (RT_ELEMENTS(s_aFlagList) == i)
     
    152145            {
    153146                fFlags |= s_aFlagList[i];
    154                 pcszNext += flagNameLen(s_aFlagList[i]);
     147                pcszNext += GuestPropFlagNameLen(s_aFlagList[i]);
    155148                while (' ' == *pcszNext)
    156149                    ++pcszNext;
     
    169162}
    170163
     164
    171165/**
    172166 * Write out flags to a string.
     
    176170 *                     a buffer of size (at least) MAX_FLAGS_LEN.
    177171 */
    178 DECLINLINE(int) writeFlags(uint32_t fFlags, char *pszFlags)
     172DECLINLINE(int) GuestPropWriteFlags(uint32_t fFlags, char *pszFlags)
    179173{
    180174    /* Putting READONLY before the other RDONLY flags keeps the result short. */
    181175    static const uint32_t s_aFlagList[] =
    182176    {
    183         TRANSIENT, READONLY, RDONLYGUEST, RDONLYHOST, TRANSRESET
     177        GUEST_PROP_F_TRANSIENT, GUEST_PROP_F_READONLY, GUEST_PROP_F_RDONLYGUEST, GUEST_PROP_F_RDONLYHOST, GUEST_PROP_F_TRANSRESET
    184178    };
    185179    int rc = VINF_SUCCESS;
    186180
    187181    AssertLogRelReturn(VALID_PTR(pszFlags), VERR_INVALID_POINTER);
    188     if ((fFlags & ~ALLFLAGS) == NILFLAG)
     182    if ((fFlags & ~GUEST_PROP_F_ALLFLAGS) == GUEST_PROP_F_NILFLAG)
    189183    {
     184        char *pszNext;
     185
    190186        /* TRANSRESET implies TRANSIENT.  For compatability with old clients we
    191187           always set TRANSIENT when TRANSRESET appears. */
    192         if (fFlags & TRANSRESET)
    193             fFlags |= TRANSIENT;
    194 
    195         char *pszNext = pszFlags;
     188        if (fFlags & GUEST_PROP_F_TRANSRESET)
     189            fFlags |= GUEST_PROP_F_TRANSIENT;
     190
     191        pszNext = pszFlags;
    196192        for (unsigned i = 0; i < RT_ELEMENTS(s_aFlagList); ++i)
    197193        {
    198194            if (s_aFlagList[i] == (fFlags & s_aFlagList[i]))
    199195            {
    200                 strcpy(pszNext, flagName(s_aFlagList[i]));
    201                 pszNext += flagNameLen(s_aFlagList[i]);
     196                strcpy(pszNext, GuestPropFlagName(s_aFlagList[i]));
     197                pszNext += GuestPropFlagNameLen(s_aFlagList[i]);
    202198                fFlags &= ~s_aFlagList[i];
    203                 if (fFlags != NILFLAG)
     199                if (fFlags != GUEST_PROP_F_NILFLAG)
    204200                {
    205201                    strcpy(pszNext, ", ");
     
    210206        *pszNext = '\0';
    211207
    212         Assert(fFlags == NILFLAG); /* bad s_aFlagList */
     208        Assert(fFlags == GUEST_PROP_F_NILFLAG); /* bad s_aFlagList */
    213209    }
    214210    else
     
    217213}
    218214
    219 /**
    220  * The service functions which are callable by host.
    221  */
    222 enum eHostFn
    223 {
    224     /**
    225      * Set properties in a block.  The parameters are pointers to
    226      * NULL-terminated arrays containing the parameters.  These are, in order,
    227      * name, value, timestamp, flags.  Strings are stored as pointers to
    228      * mutable utf8 data.  All parameters must be supplied.
    229      */
    230     SET_PROPS_HOST = 1,
    231     /**
    232      * Get the value attached to a guest property
    233      * The parameter format matches that of GET_PROP.
    234      */
    235     GET_PROP_HOST = 2,
    236     /**
    237      * Set the value attached to a guest property
    238      * The parameter format matches that of SET_PROP.
    239      */
    240     SET_PROP_HOST = 3,
    241     /**
    242      * Set the value attached to a guest property
    243      * The parameter format matches that of SET_PROP_VALUE.
    244      */
    245     SET_PROP_VALUE_HOST = 4,
    246     /**
    247      * Remove a guest property.
    248      * The parameter format matches that of DEL_PROP.
    249      */
    250     DEL_PROP_HOST = 5,
    251     /**
    252      * Enumerate guest properties.
    253      * The parameter format matches that of ENUM_PROPS.
    254      */
    255     ENUM_PROPS_HOST = 6,
    256 
    257     /**
    258      * Set global flags for the service.  Currently RDONLYGUEST is supported.
    259      * Takes one 32-bit unsigned integer parameter for the flags.
    260      */
    261     SET_GLOBAL_FLAGS_HOST = 7,
    262 
    263     /**
    264      * Return the pointer to a debug info function enumerating all guest properties.
    265      */
    266     GET_DBGF_INFO_FN = 8
    267 };
    268 
    269 /**
    270  * The service functions which are called by guest.  The numbers may not change,
    271  * so we hardcode them.
    272  */
    273 enum eGuestFn
    274 {
    275     /** Get a guest property */
    276     GET_PROP = 1,
    277     /** Set a guest property */
    278     SET_PROP = 2,
    279     /** Set just the value of a guest property */
    280     SET_PROP_VALUE = 3,
    281     /** Delete a guest property */
    282     DEL_PROP = 4,
    283     /** Enumerate guest properties */
    284     ENUM_PROPS = 5,
    285     /** Poll for guest notifications */
    286     GET_NOTIFICATION = 6
    287 };
    288 
    289 /**
    290  * Data structure to pass to the service extension callback.  We use this to
    291  * notify the host of changes to properties.
    292  */
    293 typedef struct _HOSTCALLBACKDATA
    294 {
    295     /** Magic number to identify the structure */
    296     uint32_t u32Magic;
     215
     216/** @name The service functions which are callable by host.
     217 * @{
     218 */
     219/** Set properties in a block.
     220 * The parameters are pointers to NULL-terminated arrays containing the
     221 * parameters.  These are, in order, name, value, timestamp, flags.  Strings are
     222 * stored as pointers to mutable utf8 data.  All parameters must be supplied. */
     223#define GUEST_PROP_FN_SET_PROPS_HOST        1
     224/** Get the value attached to a guest property.
     225 * The parameter format matches that of GET_PROP. */
     226#define GUEST_PROP_FN_GET_PROP_HOST         2
     227/** Set the value attached to a guest property.
     228 * The parameter format matches that of SET_PROP. */
     229#define GUEST_PROP_FN_SET_PROP_HOST         3
     230/** Set the value attached to a guest property.
     231 * The parameter format matches that of SET_PROP_VALUE. */
     232#define GUEST_PROP_FN_SET_PROP_VALUE_HOST   4
     233/** Remove a guest property.
     234 * The parameter format matches that of DEL_PROP. */
     235#define GUEST_PROP_FN_DEL_PROP_HOST         5
     236/** Enumerate guest properties.
     237 * The parameter format matches that of ENUM_PROPS. */
     238#define GUEST_PROP_FN_ENUM_PROPS_HOST       6
     239/** Set global flags for the service.
     240 * Currently RDONLYGUEST is supported.  Takes one 32-bit unsigned integer
     241 * parameter for the flags. */
     242#define GUEST_PROP_FN_SET_GLOBAL_FLAGS_HOST 7
     243/** Return the pointer to a debug info function enumerating all guest
     244 * properties. */
     245#define GUEST_PROP_FN_GET_DBGF_INFO_FN      8
     246/** @} */
     247
     248
     249/** @name The service functions which are called by guest.
     250 *
     251 * @note The numbers may not change!
     252 * @{
     253 */
     254/** Get a guest property */
     255#define GUEST_PROP_FN_GET_PROP              1
     256/** Set a guest property */
     257#define GUEST_PROP_FN_SET_PROP              2
     258/** Set just the value of a guest property */
     259#define GUEST_PROP_FN_SET_PROP_VALUE        3
     260/** Delete a guest property */
     261#define GUEST_PROP_FN_DEL_PROP              4
     262/** Enumerate guest properties */
     263#define GUEST_PROP_FN_ENUM_PROPS            5
     264/** Poll for guest notifications */
     265#define GUEST_PROP_FN_GET_NOTIFICATION      6
     266/** @} */
     267
     268
     269/**
     270 * Data structure to pass to the service extension callback.
     271 * We use this to notify the host of changes to properties.
     272 */
     273typedef struct GUESTPROPHOSTCALLBACKDATA
     274{
     275    /** Magic number to identify the structure (GUESTPROPHOSTCALLBACKDATA_MAGIC). */
     276    uint32_t        u32Magic;
    297277    /** The name of the property that was changed */
    298     const char *pcszName;
     278    const char     *pcszName;
    299279    /** The new property value, or NULL if the property was deleted */
    300     const char *pcszValue;
     280    const char     *pcszValue;
    301281    /** The timestamp of the modification */
    302     uint64_t u64Timestamp;
     282    uint64_t       u64Timestamp;
    303283    /** The flags field of the modified property */
    304     const char *pcszFlags;
    305 } HOSTCALLBACKDATA, *PHOSTCALLBACKDATA;
    306 
    307 enum
    308 {
    309     /** Magic number for sanity checking the HOSTCALLBACKDATA structure */
    310     HOSTCALLBACKMAGIC = 0x69c87a78
    311 };
     284    const char     *pcszFlags;
     285} GUESTPROPHOSTCALLBACKDATA;
     286/** Poitner to a data structure to pass to the service extension callback. */
     287typedef GUESTPROPHOSTCALLBACKDATA *PGUESTPROPHOSTCALLBACKDATA;
     288
     289/** Magic number for sanity checking the HOSTCALLBACKDATA structure */
     290#define GUESTPROPHOSTCALLBACKDATA_MAGIC     UINT32_C(0x69c87a78)
     291
     292/** Everything defined in this file lives in this namespace. */
     293namespace guestProp {
    312294
    313295/**
  • trunk/src/VBox/Additions/common/VBoxControl/VBoxControl.cpp

    r69500 r70058  
    11891189     * of space here in case the maximum values are raised. */
    11901190    void *pvBuf = NULL;
    1191     uint32_t cbBuf = MAX_VALUE_LEN + MAX_FLAGS_LEN + 1024;
     1191    uint32_t cbBuf = GUEST_PROP_MAX_VALUE_LEN + GUEST_PROP_MAX_FLAGS_LEN + 1024;
    11921192    if (RT_SUCCESS(rc))
    11931193    {
     
    14971497     * of space here in case the maximum values are raised. */
    14981498    void *pvBuf = NULL;
    1499     uint32_t cbBuf = MAX_NAME_LEN + MAX_VALUE_LEN + MAX_FLAGS_LEN + 1024;
     1499    uint32_t cbBuf = GUEST_PROP_MAX_NAME_LEN + GUEST_PROP_MAX_VALUE_LEN + GUEST_PROP_MAX_FLAGS_LEN + 1024;
    15001500    /* Because there is a race condition between our reading the size of a
    15011501     * property and the guest updating it, we loop a few times here and
  • trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp

    r70040 r70058  
    13251325                         */
    13261326                        uint32_t fFlags = 0;
    1327                         rc = guestProp::validateFlags(apszFields[3], &fFlags);
     1327                        rc = GuestPropValidateFlags(apszFields[3], &fFlags);
    13281328                        if (RT_SUCCESS(rc))
    13291329                        {
    1330                             if (fFlags & guestProp::RDONLYGUEST)
     1330                            if (fFlags & GUEST_PROP_F_RDONLYGUEST)
    13311331                            {
    13321332                                apszFields[0] += sizeof(g_szzPattern) - 2;
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibGuestProp.cpp

    r69500 r70058  
    165165    {
    166166        SetProperty Msg;
    167         VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, SET_PROP_VALUE, 3);
     167        VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_SET_PROP_VALUE, 3);
    168168        VbglHGCMParmPtrSetString(&Msg.name,  pszName);
    169169        VbglHGCMParmPtrSetString(&Msg.value, pszValue);
     
    174174    {
    175175        DelProperty Msg;
    176         VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, DEL_PROP, 1);
     176        VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_DEL_PROP, 1);
    177177        VbglHGCMParmPtrSetString(&Msg.name, pszName);
    178178        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     
    202202    {
    203203        SetPropertyValue Msg;
    204         VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, SET_PROP_VALUE, 2);
     204        VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_SET_PROP_VALUE, 2);
    205205        VbglHGCMParmPtrSetString(&Msg.name, pszName);
    206206        VbglHGCMParmPtrSetString(&Msg.value, pszValue);
     
    210210    {
    211211        DelProperty Msg;
    212         VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, DEL_PROP, 1);
     212        VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_DEL_PROP, 1);
    213213        VbglHGCMParmPtrSetString(&Msg.name, pszName);
    214214        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     
    298298     */
    299299    GetProperty Msg;
    300     VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GET_PROP, 4);
     300    VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_GET_PROP, 4);
    301301    VbglHGCMParmPtrSetString(&Msg.name, pszName);
    302302    VbglHGCMParmPtrSet(&Msg.buffer, pvBuf, cbBuf);
     
    387387    char       *pszValue = NULL;
    388388    void       *pvBuf    = NULL;
    389     uint32_t    cchBuf   = MAX_VALUE_LEN;
     389    uint32_t    cbBuf    = GUEST_PROP_MAX_VALUE_LEN;
    390390    int         rc       = VERR_BUFFER_OVERFLOW;
    391391    for (unsigned i = 0; i < 10 && rc == VERR_BUFFER_OVERFLOW; ++i)
    392392    {
    393393        /* We leave a bit of space here in case the maximum value is raised. */
    394         cchBuf += 1024;
    395         void *pvTmpBuf = RTMemRealloc(pvBuf, cchBuf);
     394        cbBuf += 1024;
     395        void *pvTmpBuf = RTMemRealloc(pvBuf, cbBuf);
    396396        if (pvTmpBuf)
    397397        {
    398398            pvBuf = pvTmpBuf;
    399             rc = VbglR3GuestPropRead(idClient, pszName, pvBuf, cchBuf,
    400                                      &pszValue, NULL, NULL, &cchBuf);
     399            rc = VbglR3GuestPropRead(idClient, pszName, pvBuf, cbBuf, &pszValue, NULL, NULL, &cbBuf);
    401400        }
    402401        else
     
    494493{
    495494    EnumProperties Msg;
    496     VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, ENUM_PROPS, 3);
     495    VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_ENUM_PROPS, 3);
    497496
    498497    /* Get the length of the patterns array... */
     
    759758
    760759    DelProperty Msg;
    761     VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, DEL_PROP, 1);
     760    VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, GUEST_PROP_FN_DEL_PROP, 1);
    762761    VbglHGCMParmPtrSetString(&Msg.name, pszName);
    763762    return VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     
    861860     */
    862861    GetNotification Msg;
    863     VBGL_HGCM_HDR_INIT_TIMED(&Msg.hdr, idClient, GET_NOTIFICATION, 4, cMillies);
     862    VBGL_HGCM_HDR_INIT_TIMED(&Msg.hdr, idClient, GUEST_PROP_FN_GET_NOTIFICATION, 4, cMillies);
    864863
    865864    VbglHGCMParmPtrSetString(&Msg.patterns, pszPatterns);
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibVideo.cpp

    r69500 r70058  
    385385        {
    386386            int rc2;
    387             char szModeName[MAX_NAME_LEN];
    388             char szModeParms[MAX_VALUE_LEN];
     387            char szModeName[GUEST_PROP_MAX_NAME_LEN];
     388            char szModeParms[GUEST_PROP_MAX_VALUE_LEN];
    389389            RTStrPrintf(szModeName, sizeof(szModeName), VIDEO_PROP_PREFIX "%u", idScreen);
    390390            RTStrPrintf(szModeParms, sizeof(szModeParms), "%ux%ux%u,%ux%u,%u", cx, cy, cBits, x, y, (unsigned) fEnabled);
     
    471471         * something is wrong with the data stored in the property. */
    472472        char szModeParms[1024];
    473         char szModeName[MAX_NAME_LEN]; /** @todo add a VbglR3GuestPropReadValueF/FV that does the RTStrPrintf for you. */
     473        char szModeName[GUEST_PROP_MAX_NAME_LEN]; /** @todo add a VbglR3GuestPropReadValueF/FV that does the RTStrPrintf for you. */
    474474        RTStrPrintf(szModeName, sizeof(szModeName), VIDEO_PROP_PREFIX "%u", idScreen);
    475475        rc = VbglR3GuestPropReadValue(idClient, szModeName, szModeParms, sizeof(szModeParms), NULL);
  • trunk/src/VBox/Additions/linux/lightdm-greeter/vbox-greeter.cpp

    r69749 r70058  
    217217     * of space here in case the maximum values are raised. */
    218218    void *pvBuf = NULL;
    219     uint32_t cbBuf = MAX_VALUE_LEN + MAX_FLAGS_LEN + _1K;
     219    uint32_t cbBuf = GUEST_PROP_MAX_VALUE_LEN + GUEST_PROP_MAX_FLAGS_LEN + _1K;
    220220
    221221    /* Because there is a race condition between our reading the size of a
  • trunk/src/VBox/HostServices/GuestProperties/service.cpp

    r69500 r70058  
    8080
    8181    /** Default constructor */
    82     Property() : mTimestamp(0), mFlags(NILFLAG)
     82    Property() : mTimestamp(0), mFlags(GUEST_PROP_F_NILFLAG)
    8383    {
    8484        RT_ZERO(mStrCore);
     
    171171    PVBOXHGCMSVCHELPERS mpHelpers;
    172172    /** Global flags for the service */
    173     ePropFlags meGlobalFlags;
     173    uint32_t mfGlobalFlags;
    174174    /** The property string space handle. */
    175175    RTSTRSPACE mhProperties;
     
    255255     * @retval  VINF_PERMISSION_DENIED if the side is globally marked read-only.
    256256     *
    257      * @param   eFlags   the flags on the property in question
     257     * @param   fFlags   the flags on the property in question
    258258     * @param   isGuest  is the guest or the host trying to make the change?
    259259     */
    260     int checkPermission(ePropFlags eFlags, bool isGuest)
    261     {
    262         if (eFlags & (isGuest ? RDONLYGUEST : RDONLYHOST))
     260    int checkPermission(uint32_t fFlags, bool isGuest)
     261    {
     262        if (fFlags & (isGuest ? GUEST_PROP_F_RDONLYGUEST : GUEST_PROP_F_RDONLYHOST))
    263263            return VERR_PERMISSION_DENIED;
    264         if (isGuest && (meGlobalFlags & RDONLYGUEST))
     264        if (isGuest && (mfGlobalFlags & GUEST_PROP_F_RDONLYGUEST))
    265265            return VINF_PERMISSION_DENIED;
    266266        return VINF_SUCCESS;
     
    282282    explicit Service(PVBOXHGCMSVCHELPERS pHelpers)
    283283        : mpHelpers(pHelpers)
    284         , meGlobalFlags(NILFLAG)
     284        , mfGlobalFlags(GUEST_PROP_F_NILFLAG)
    285285        , mhProperties(NULL)
    286286        , mcProperties(0)
     
    526526            {
    527527                uint32_t fFlagsIgn;
    528                 rc = validateFlags(papszFlags[i], &fFlagsIgn);
     528                rc = GuestPropValidateFlags(papszFlags[i], &fFlagsIgn);
    529529            }
    530530        }
     
    537537            {
    538538                uint32_t fFlags;
    539                 rc = validateFlags(papszFlags[i], &fFlags);
     539                rc = GuestPropValidateFlags(papszFlags[i], &fFlags);
    540540                AssertRCBreak(rc);
    541541
     
    618618    if (pProp)
    619619    {
    620         char szFlags[MAX_FLAGS_LEN];
    621         rc = writeFlags(pProp->mFlags, szFlags);
     620        char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
     621        rc = GuestPropWriteFlags(pProp->mFlags, szFlags);
    622622        if (RT_SUCCESS(rc))
    623623        {
     
    672672    uint32_t cchValue = 0;              /* ditto */
    673673    uint32_t cchFlags = 0;
    674     uint32_t fFlags = NILFLAG;
     674    uint32_t fFlags = GUEST_PROP_F_NILFLAG;
    675675    uint64_t u64TimeNano = getCurrentTimestamp();
    676676
     
    702702                                     RTSTR_VALIDATE_ENCODING_ZERO_TERMINATED);
    703703    if ((3 == cParms) && RT_SUCCESS(rc))
    704         rc = validateFlags(pcszFlags, &fFlags);
     704        rc = GuestPropValidateFlags(pcszFlags, &fFlags);
    705705    if (RT_FAILURE(rc))
    706706    {
     
    714714     */
    715715    Property *pProp = getPropertyInternal(pcszName);
    716     rc = checkPermission(pProp ? (ePropFlags)pProp->mFlags : NILFLAG, isGuest);
     716    rc = checkPermission(pProp ? pProp->mFlags : GUEST_PROP_F_NILFLAG, isGuest);
    717717    if (rc == VINF_SUCCESS)
    718718    {
     
    726726            pProp->mFlags = fFlags;
    727727        }
    728         else if (mcProperties < MAX_PROPS)
     728        else if (mcProperties < GUEST_PROP_MAX_PROPS)
    729729        {
    730730            try
     
    806806    Property *pProp = getPropertyInternal(pcszName);
    807807    if (pProp)
    808         rc = checkPermission((ePropFlags)pProp->mFlags, isGuest);
     808        rc = checkPermission(pProp->mFlags, isGuest);
    809809
    810810    /*
     
    856856    size_t const    cbTimestamp = RTStrFormatNumber(szTimestamp, pProp->mTimestamp, 10, 0, 0, 0) + 1;
    857857
    858     char            szFlags[MAX_FLAGS_LEN];
    859     int rc = writeFlags(pProp->mFlags, szFlags);
     858    char            szFlags[GUEST_PROP_MAX_FLAGS_LEN];
     859    int rc = GuestPropWriteFlags(pProp->mFlags, szFlags);
    860860    if (RT_FAILURE(rc))
    861861        return rc;
     
    922922       )
    923923        rc = VERR_INVALID_PARAMETER;
    924     if (RT_SUCCESS(rc) && cbPatterns > MAX_PATTERN_LEN)
     924    if (RT_SUCCESS(rc) && cbPatterns > GUEST_PROP_MAX_PATTERN_LEN)
    925925        rc = VERR_TOO_MUCH_DATA;
    926926
     
    928928     * First repack the patterns into the format expected by RTStrSimplePatternMatch()
    929929     */
    930     char szPatterns[MAX_PATTERN_LEN];
     930    char szPatterns[GUEST_PROP_MAX_PATTERN_LEN];
    931931    if (RT_SUCCESS(rc))
    932932    {
     
    10151015    if (RT_SUCCESS(rc))
    10161016    {
    1017         char szFlags[MAX_FLAGS_LEN];
    1018         rc = writeFlags(prop.mFlags, szFlags);
     1017        char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
     1018        rc = GuestPropWriteFlags(prop.mFlags, szFlags);
    10191019        if (RT_SUCCESS(rc))
    10201020        {
     
    11131113                }
    11141114
    1115                 mGuestWaiters.push_back(GuestCall(u32ClientId, callHandle, GET_NOTIFICATION,
     1115                mGuestWaiters.push_back(GuestCall(u32ClientId, callHandle, GUEST_PROP_FN_GET_NOTIFICATION,
    11161116                                                  cParms, paParms, rc));
    11171117                rc = VINF_HGCM_ASYNC_EXECUTE;
     
    11951195        /** @todo r=andy This list does not have a purpose but for tracking
    11961196          *              the timestamps ... */
    1197         if (mGuestNotifications.size() > MAX_GUEST_NOTIFICATIONS)
     1197        if (mGuestNotifications.size() > GUEST_PROP_MAX_GUEST_NOTIFICATIONS)
    11981198            mGuestNotifications.pop_front();
    11991199    }
     
    12121212        if (pProp)
    12131213        {
    1214             char szFlags[MAX_FLAGS_LEN];
     1214            char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
    12151215            /* Send out a host notification */
    12161216            const char *pszValue = prop.mValue.c_str();
    1217             rc = writeFlags(prop.mFlags, szFlags);
     1217            rc = GuestPropWriteFlags(prop.mFlags, szFlags);
    12181218            if (RT_SUCCESS(rc))
    12191219                rc = notifyHost(pszProperty, pszValue, u64Timestamp, szFlags);
     
    12371237static DECLCALLBACK(void) notifyHostAsyncWorker(PFNHGCMSVCEXT pfnHostCallback,
    12381238                                                void *pvHostData,
    1239                                                 HOSTCALLBACKDATA *pHostCallbackData)
     1239                                                PGUESTPROPHOSTCALLBACKDATA pHostCallbackData)
    12401240{
    12411241    pfnHostCallback(pvHostData, 0 /*u32Function*/,
    12421242                   (void *)pHostCallbackData,
    1243                    sizeof(HOSTCALLBACKDATA));
     1243                   sizeof(GUESTPROPHOSTCALLBACKDATA));
    12441244    RTMemFree(pHostCallbackData);
    12451245}
     
    12661266    size_t cbValue = pszValue? strlen(pszValue): 0;
    12671267    size_t cbFlags = pszFlags? strlen(pszFlags): 0;
    1268     size_t cbAlloc = sizeof(HOSTCALLBACKDATA) + cbName + cbValue + cbFlags + 3;
    1269     HOSTCALLBACKDATA *pHostCallbackData = (HOSTCALLBACKDATA *)RTMemAlloc(cbAlloc);
     1268    size_t cbAlloc = sizeof(GUESTPROPHOSTCALLBACKDATA) + cbName + cbValue + cbFlags + 3;
     1269    PGUESTPROPHOSTCALLBACKDATA pHostCallbackData = (PGUESTPROPHOSTCALLBACKDATA)RTMemAlloc(cbAlloc);
    12701270    if (pHostCallbackData)
    12711271    {
    12721272        uint8_t *pu8 = (uint8_t *)pHostCallbackData;
    1273         pu8 += sizeof(HOSTCALLBACKDATA);
    1274 
    1275         pHostCallbackData->u32Magic     = HOSTCALLBACKMAGIC;
     1273        pu8 += sizeof(GUESTPROPHOSTCALLBACKDATA);
     1274
     1275        pHostCallbackData->u32Magic     = GUESTPROPHOSTCALLBACKDATA_MAGIC;
    12761276
    12771277        pHostCallbackData->pcszName     = (const char *)pu8;
     
    13051305    }
    13061306#else
    1307     HOSTCALLBACKDATA HostCallbackData;
    1308     HostCallbackData.u32Magic     = HOSTCALLBACKMAGIC;
     1307    GUESTPROPHOSTCALLBACKDATA HostCallbackData;
     1308    HostCallbackData.u32Magic     = GUESTPROPHOSTCALLBACKDATA_MAGIC;
    13091309    HostCallbackData.pcszName     = pszName;
    13101310    HostCallbackData.pcszValue    = pszValue;
     
    13421342        {
    13431343            /* The guest wishes to read a property */
    1344             case GET_PROP:
     1344            case GUEST_PROP_FN_GET_PROP:
    13451345                LogFlowFunc(("GET_PROP\n"));
    13461346                rc = getProperty(cParms, paParms);
     
    13481348
    13491349            /* The guest wishes to set a property */
    1350             case SET_PROP:
     1350            case GUEST_PROP_FN_SET_PROP:
    13511351                LogFlowFunc(("SET_PROP\n"));
    13521352                rc = setProperty(cParms, paParms, true);
     
    13541354
    13551355            /* The guest wishes to set a property value */
    1356             case SET_PROP_VALUE:
     1356            case GUEST_PROP_FN_SET_PROP_VALUE:
    13571357                LogFlowFunc(("SET_PROP_VALUE\n"));
    13581358                rc = setProperty(cParms, paParms, true);
     
    13601360
    13611361            /* The guest wishes to remove a configuration value */
    1362             case DEL_PROP:
     1362            case GUEST_PROP_FN_DEL_PROP:
    13631363                LogFlowFunc(("DEL_PROP\n"));
    13641364                rc = delProperty(cParms, paParms, true);
     
    13661366
    13671367            /* The guest wishes to enumerate all properties */
    1368             case ENUM_PROPS:
     1368            case GUEST_PROP_FN_ENUM_PROPS:
    13691369                LogFlowFunc(("ENUM_PROPS\n"));
    13701370                rc = enumProps(cParms, paParms);
     
    13721372
    13731373            /* The guest wishes to get the next property notification */
    1374             case GET_NOTIFICATION:
     1374            case GUEST_PROP_FN_GET_NOTIFICATION:
    13751375                LogFlowFunc(("GET_NOTIFICATION\n"));
    13761376                rc = getNotification(u32ClientID, callHandle, cParms, paParms);
     
    14051405    PCDBGFINFOHLP pHlp = ((ENUMDBGINFO*)pvUser)->pHlp;
    14061406
    1407     char szFlags[MAX_FLAGS_LEN];
    1408     int rc = writeFlags(pProp->mFlags, szFlags);
     1407    char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
     1408    int rc = GuestPropWriteFlags(pProp->mFlags, szFlags);
    14091409    if (RT_FAILURE(rc))
    14101410        RTStrPrintf(szFlags, sizeof(szFlags), "???");
     
    14561456        {
    14571457            /* The host wishes to set a block of properties */
    1458             case SET_PROPS_HOST:
     1458            case GUEST_PROP_FN_SET_PROPS_HOST:
    14591459                LogFlowFunc(("SET_PROPS_HOST\n"));
    14601460                rc = setPropertyBlock(cParms, paParms);
     
    14621462
    14631463            /* The host wishes to read a configuration value */
    1464             case GET_PROP_HOST:
     1464            case GUEST_PROP_FN_GET_PROP_HOST:
    14651465                LogFlowFunc(("GET_PROP_HOST\n"));
    14661466                rc = getProperty(cParms, paParms);
     
    14681468
    14691469            /* The host wishes to set a configuration value */
    1470             case SET_PROP_HOST:
     1470            case GUEST_PROP_FN_SET_PROP_HOST:
    14711471                LogFlowFunc(("SET_PROP_HOST\n"));
    14721472                rc = setProperty(cParms, paParms, false);
     
    14741474
    14751475            /* The host wishes to set a configuration value */
    1476             case SET_PROP_VALUE_HOST:
     1476            case GUEST_PROP_FN_SET_PROP_VALUE_HOST:
    14771477                LogFlowFunc(("SET_PROP_VALUE_HOST\n"));
    14781478                rc = setProperty(cParms, paParms, false);
     
    14801480
    14811481            /* The host wishes to remove a configuration value */
    1482             case DEL_PROP_HOST:
     1482            case GUEST_PROP_FN_DEL_PROP_HOST:
    14831483                LogFlowFunc(("DEL_PROP_HOST\n"));
    14841484                rc = delProperty(cParms, paParms, false);
     
    14861486
    14871487            /* The host wishes to enumerate all properties */
    1488             case ENUM_PROPS_HOST:
     1488            case GUEST_PROP_FN_ENUM_PROPS_HOST:
    14891489                LogFlowFunc(("ENUM_PROPS\n"));
    14901490                rc = enumProps(cParms, paParms);
     
    14921492
    14931493            /* The host wishes to set global flags for the service */
    1494             case SET_GLOBAL_FLAGS_HOST:
     1494            case GUEST_PROP_FN_SET_GLOBAL_FLAGS_HOST:
    14951495                LogFlowFunc(("SET_GLOBAL_FLAGS_HOST\n"));
    14961496                if (cParms == 1)
    14971497                {
    1498                     uint32_t eFlags;
    1499                     rc = paParms[0].getUInt32(&eFlags);
     1498                    uint32_t fFlags;
     1499                    rc = paParms[0].getUInt32(&fFlags);
    15001500                    if (RT_SUCCESS(rc))
    1501                         meGlobalFlags = (ePropFlags)eFlags;
     1501                        mfGlobalFlags = fFlags;
    15021502                }
    15031503                else
     
    15051505                break;
    15061506
    1507             case GET_DBGF_INFO_FN:
     1507            case GUEST_PROP_FN_GET_DBGF_INFO_FN:
    15081508                if (cParms != 2)
    15091509                    return VERR_INVALID_PARAMETER;
  • trunk/src/VBox/HostServices/GuestProperties/testcase/tstGuestPropSvc.cpp

    r69500 r70058  
    106106{
    107107    int rc = VINF_SUCCESS;
    108     char *pszFlagBuffer = (char *)RTTestGuardedAllocTail(g_hTest, MAX_FLAGS_LEN);
     108    char *pszFlagBuffer = (char *)RTTestGuardedAllocTail(g_hTest, GUEST_PROP_MAX_FLAGS_LEN);
    109109
    110110    RTTestISub("Conversion of valid flags strings");
     
    112112    {
    113113        uint32_t fFlags;
    114         rc = validateFlags(g_aValidFlagStrings[i].pcszIn, &fFlags);
     114        rc = GuestPropValidateFlags(g_aValidFlagStrings[i].pcszIn, &fFlags);
    115115        if (RT_FAILURE(rc))
    116116            RTTestIFailed("Failed to validate flag string '%s'", g_aValidFlagStrings[i].pcszIn);
    117117        if (RT_SUCCESS(rc))
    118118        {
    119             rc = writeFlags(fFlags, pszFlagBuffer);
     119            rc = GuestPropWriteFlags(fFlags, pszFlagBuffer);
    120120            if (RT_FAILURE(rc))
    121121                RTTestIFailed("Failed to convert flag string '%s' back to a string.",
    122122                              g_aValidFlagStrings[i].pcszIn);
    123123        }
    124         if (RT_SUCCESS(rc) && (strlen(pszFlagBuffer) > MAX_FLAGS_LEN - 1))
     124        if (RT_SUCCESS(rc) && (strlen(pszFlagBuffer) > GUEST_PROP_MAX_FLAGS_LEN - 1))
    125125        {
    126126            RTTestIFailed("String '%s' converts back to a flag string which is too long.\n",
     
    143143            uint32_t fFlags;
    144144            /* This is required to fail. */
    145             if (RT_SUCCESS(validateFlags(g_apszInvalidFlagStrings[i], &fFlags)))
     145            if (RT_SUCCESS(GuestPropValidateFlags(g_apszInvalidFlagStrings[i], &fFlags)))
    146146            {
    147147                RTTestIFailed("String '%s' was incorrectly accepted as a valid flag string.\n",
     
    153153    if (RT_SUCCESS(rc))
    154154    {
    155         uint32_t u32BadFlags = ALLFLAGS << 1;
     155        uint32_t u32BadFlags = GUEST_PROP_F_ALLFLAGS << 1;
    156156        RTTestISub("Rejection of an invalid flags field");
    157157        /* This is required to fail. */
    158         if (RT_SUCCESS(writeFlags(u32BadFlags, pszFlagBuffer)))
     158        if (RT_SUCCESS(GuestPropWriteFlags(u32BadFlags, pszFlagBuffer)))
    159159        {
    160160            RTTestIFailed("Flags 0x%x were incorrectly written out as '%.*s'\n",
    161                           u32BadFlags, MAX_FLAGS_LEN, pszFlagBuffer);
     161                          u32BadFlags, GUEST_PROP_MAX_FLAGS_LEN, pszFlagBuffer);
    162162            rc = VERR_PARSE_ERROR;
    163163        }
     
    226226    aParms[2].setPointer((void *)g_au64TimestampBlock, 0);
    227227    aParms[3].setPointer((void *)g_apcszFlagsBlock, 0);
    228     RTTESTI_CHECK_RC(ptable->pfnHostCall(ptable->pvService, SET_PROPS_HOST, 4, &aParms[0]), VINF_SUCCESS);
     228    RTTESTI_CHECK_RC(ptable->pfnHostCall(ptable->pvService, GUEST_PROP_FN_SET_PROPS_HOST, 4, &aParms[0]), VINF_SUCCESS);
    229229}
    230230
     
    337337        aParms[1].setPointer((void *)abBuffer, g_aEnumStrings[i].cbBuffer - 1);
    338338        memset(abBuffer, 0x55, sizeof(abBuffer));
    339         int rc2 = ptable->pfnHostCall(ptable->pvService, ENUM_PROPS_HOST, 3, aParms);
     339        int rc2 = ptable->pfnHostCall(ptable->pvService, GUEST_PROP_FN_ENUM_PROPS_HOST, 3, aParms);
    340340        if (rc2 == VERR_BUFFER_OVERFLOW)
    341341        {
     
    353353        aParms[1].setPointer((void *)abBuffer, g_aEnumStrings[i].cbBuffer);
    354354        memset(abBuffer, 0x55, sizeof(abBuffer));
    355         rc2 = ptable->pfnHostCall(ptable->pvService, ENUM_PROPS_HOST, 3, aParms);
     355        rc2 = ptable->pfnHostCall(ptable->pvService, GUEST_PROP_FN_ENUM_PROPS_HOST, 3, aParms);
    356356        if (rc2 == VINF_SUCCESS)
    357357        {
     
    394394{
    395395    VBOXHGCMCALLHANDLE_TYPEDEF callHandle = { VINF_SUCCESS };
    396     int command = SET_PROP_VALUE;
     396    int command = GUEST_PROP_FN_SET_PROP_VALUE;
    397397    if (isHost)
    398398    {
    399399        if (useSetProp)
    400             command = SET_PROP_HOST;
     400            command = GUEST_PROP_FN_SET_PROP_HOST;
    401401        else
    402             command = SET_PROP_VALUE_HOST;
     402            command = GUEST_PROP_FN_SET_PROP_VALUE_HOST;
    403403    }
    404404    else if (useSetProp)
    405         command = SET_PROP;
     405        command = GUEST_PROP_FN_SET_PROP;
    406406    VBOXHGCMSVCPARM aParms[3];
    407407    /* Work around silly constant issues - we ought to allow passing
    408408     * constant strings in the hgcm parameters. */
    409     char szName[MAX_NAME_LEN];
    410     char szValue[MAX_VALUE_LEN];
    411     char szFlags[MAX_FLAGS_LEN];
     409    char szName[GUEST_PROP_MAX_NAME_LEN];
     410    char szValue[GUEST_PROP_MAX_VALUE_LEN];
     411    char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
    412412    RTStrPrintf(szName, sizeof(szName), "%s", pcszName);
    413413    RTStrPrintf(szValue, sizeof(szValue), "%s", pcszValue);
     
    493493{
    494494    VBOXHGCMCALLHANDLE_TYPEDEF callHandle = { VINF_SUCCESS };
    495     int command = DEL_PROP;
     495    int command = GUEST_PROP_FN_DEL_PROP;
    496496    if (isHost)
    497         command = DEL_PROP_HOST;
     497        command = GUEST_PROP_FN_DEL_PROP_HOST;
    498498    VBOXHGCMSVCPARM aParms[1];
    499499    aParms[0].setString(pcszName);
     
    595595        /* Work around silly constant issues - we ought to allow passing
    596596         * constant strings in the hgcm parameters. */
    597         char szBuffer[MAX_VALUE_LEN + MAX_FLAGS_LEN];
     597        char szBuffer[GUEST_PROP_MAX_VALUE_LEN + GUEST_PROP_MAX_FLAGS_LEN];
    598598        RTTESTI_CHECK_RETV(s_aGetProperties[i].cchValue < sizeof(szBuffer));
    599599
     
    601601        memset(szBuffer, 0x55, sizeof(szBuffer));
    602602        aParms[1].setPointer(szBuffer, sizeof(szBuffer));
    603         int rc2 = pTable->pfnHostCall(pTable->pvService, GET_PROP_HOST, 4, aParms);
     603        int rc2 = pTable->pfnHostCall(pTable->pvService, GUEST_PROP_FN_GET_PROP_HOST, 4, aParms);
    604604
    605605        if (s_aGetProperties[i].exists && RT_FAILURE(rc2))
     
    689689        aParms[1].setUInt64(1);
    690690        aParms[2].setPointer(pvBuf, cbBuf);
    691         pTable->pfnCall(pTable->pvService, &callHandle, 0, NULL, GET_NOTIFICATION, 4, aParms);
     691        pTable->pfnCall(pTable->pvService, &callHandle, 0, NULL, GUEST_PROP_FN_GET_NOTIFICATION, 4, aParms);
    692692
    693693        if (   callHandle.rc != VERR_BUFFER_OVERFLOW
     
    715715        aParms[1].setUInt64(u64Timestamp);
    716716        aParms[2].setPointer(pvBuf, cbBuf);
    717         pTable->pfnCall(pTable->pvService, &callHandle, 0, NULL, GET_NOTIFICATION, 4, aParms);
     717        pTable->pfnCall(pTable->pvService, &callHandle, 0, NULL, GUEST_PROP_FN_GET_NOTIFICATION, 4, aParms);
    718718        if (   RT_FAILURE(callHandle.rc)
    719719            || (i == 0 && callHandle.rc != VWRN_NOT_FOUND)
     
    737737    VBOXHGCMSVCPARM aParms[4];
    738738    /** Result buffer */
    739     char abBuffer[MAX_NAME_LEN + MAX_VALUE_LEN + MAX_FLAGS_LEN];
     739    char abBuffer[GUEST_PROP_MAX_NAME_LEN + GUEST_PROP_MAX_VALUE_LEN + GUEST_PROP_MAX_FLAGS_LEN];
    740740    /** Return value */
    741741    VBOXHGCMCALLHANDLE_TYPEDEF callHandle;
     
    756756    g_AsyncNotification.callHandle.rc = VINF_HGCM_ASYNC_EXECUTE;
    757757    pTable->pfnCall(pTable->pvService, &g_AsyncNotification.callHandle, 0, NULL,
    758                     GET_NOTIFICATION, 4, g_AsyncNotification.aParms);
     758                    GUEST_PROP_FN_GET_NOTIFICATION, 4, g_AsyncNotification.aParms);
    759759    if (RT_FAILURE(g_AsyncNotification.callHandle.rc))
    760760        RTTestIFailed("GET_NOTIFICATION call failed, rc=%Rrc.", g_AsyncNotification.callHandle.rc);
     
    815815 *
    816816 * @param   pTable  the service instance handle
    817  * @param   eFlags  the flags to set
    818  */
    819 static int doSetGlobalFlags(VBOXHGCMSVCFNTABLE *pTable, ePropFlags eFlags)
     817 * @param   fFlags  the flags to set
     818 */
     819static int doSetGlobalFlags(VBOXHGCMSVCFNTABLE *pTable, uint32_t fFlags)
    820820{
    821821    VBOXHGCMSVCPARM paParm;
    822     paParm.setUInt32(eFlags);
    823     int rc = pTable->pfnHostCall(pTable->pvService, SET_GLOBAL_FLAGS_HOST, 1, &paParm);
     822    paParm.setUInt32(fFlags);
     823    int rc = pTable->pfnHostCall(pTable->pvService, GUEST_PROP_FN_SET_GLOBAL_FLAGS_HOST, 1, &paParm);
    824824    if (RT_FAILURE(rc))
    825825    {
    826         char szFlags[MAX_FLAGS_LEN];
    827         if (RT_FAILURE(writeFlags(eFlags, szFlags)))
     826        char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
     827        if (RT_FAILURE(GuestPropWriteFlags(fFlags, szFlags)))
    828828            RTTestIFailed("Failed to set the global flags.");
    829829        else
     
    874874
    875875    RTTESTI_CHECK_RC_OK_RETV(VBoxHGCMSvcLoad(pTable));
    876     int rc = doSetGlobalFlags(pTable, RDONLYGUEST);
     876    int rc = doSetGlobalFlags(pTable, GUEST_PROP_F_RDONLYGUEST);
    877877    if (RT_SUCCESS(rc))
    878878    {
     
    942942
    943943    RTTESTI_CHECK_RC_OK_RETV(VBoxHGCMSvcLoad(pTable));
    944     int rc = doSetGlobalFlags(pTable, RDONLYGUEST);
     944    int rc = doSetGlobalFlags(pTable, GUEST_PROP_F_RDONLYGUEST);
    945945    if (RT_SUCCESS(rc))
    946946    {
     
    10061006            aParms[0].setString(s_szProp);
    10071007            aParms[1].setPointer(pvBuf, cbBuf);
    1008             svcTable.pfnHostCall(svcTable.pvService, GET_PROP_HOST, RT_ELEMENTS(aParms), aParms);
     1008            svcTable.pfnHostCall(svcTable.pvService, GUEST_PROP_FN_GET_PROP_HOST, RT_ELEMENTS(aParms), aParms);
    10091009
    10101010            RTTestGuardedFree(g_hTest, pvBuf);
     
    10421042            aParms[0].setString("*");
    10431043            aParms[1].setPointer(pvBuf, cbBuf);
    1044             svcTable.pfnHostCall(svcTable.pvService, ENUM_PROPS_HOST, RT_ELEMENTS(aParms), aParms);
     1044            svcTable.pfnHostCall(svcTable.pvService, GUEST_PROP_FN_ENUM_PROPS_HOST, RT_ELEMENTS(aParms), aParms);
    10451045
    10461046            RTTestGuardedFree(g_hTest, pvBuf);
     
    11111111            aParms[0].setPointer(szProp, (uint32_t)cchProp + 1);
    11121112            aParms[1].setPointer(szBuffer, sizeof(szBuffer));
    1113             RTTESTI_CHECK_RC_BREAK(svcTable.pfnHostCall(svcTable.pvService, GET_PROP_HOST, 4, aParms), VINF_SUCCESS);
     1113            RTTESTI_CHECK_RC_BREAK(svcTable.pfnHostCall(svcTable.pvService, GUEST_PROP_FN_GET_PROP_HOST, 4, aParms), VINF_SUCCESS);
    11141114        }
    11151115        cNsElapsed = RTTimeNanoTS() - cNsElapsed;
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r70036 r70058  
    17661766     * changes to the object state.
    17671767     */
    1768     PHOSTCALLBACKDATA   pCBData = reinterpret_cast<PHOSTCALLBACKDATA>(pvParms);
    1769     AssertReturn(sizeof(HOSTCALLBACKDATA) == cbParms, VERR_INVALID_PARAMETER);
    1770     AssertReturn(HOSTCALLBACKMAGIC == pCBData->u32Magic, VERR_INVALID_PARAMETER);
     1768    PGUESTPROPHOSTCALLBACKDATA pCBData = reinterpret_cast<PGUESTPROPHOSTCALLBACKDATA>(pvParms);
     1769    AssertReturn(sizeof(GUESTPROPHOSTCALLBACKDATA) == cbParms, VERR_INVALID_PARAMETER);
     1770    AssertReturn(pCBData->u32Magic == GUESTPROPHOSTCALLBACKDATA_MAGIC, VERR_INVALID_PARAMETER);
    17711771    LogFlow(("Console::doGuestPropNotification: pCBData={.pcszName=%s, .pcszValue=%s, .pcszFlags=%s}\n",
    17721772             pCBData->pcszName, pCBData->pcszValue, pCBData->pcszFlags));
     
    18391839        parm[2].u.uint32 = 0;
    18401840
    1841         vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", ENUM_PROPS_HOST, 3,
    1842                                       &parm[0]);
     1841        vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_ENUM_PROPS_HOST, 3, &parm[0]);
    18431842        Utf8Buf.jolt();
    18441843        if (parm[2].type != VBOX_HGCM_SVC_PARM_32BIT)
     
    59415940    {
    59425941        VBOXHGCMSVCPARM parm[4];
    5943         char szBuffer[MAX_VALUE_LEN + MAX_FLAGS_LEN];
     5942        char szBuffer[GUEST_PROP_MAX_VALUE_LEN + GUEST_PROP_MAX_FLAGS_LEN];
    59445943
    59455944        parm[0].type = VBOX_HGCM_SVC_PARM_PTR;
     
    59575956        parm[3].u.uint32 = 0;
    59585957
    5959         int vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GET_PROP_HOST,
     5958        int vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_GET_PROP_HOST,
    59605959                                          4, &parm[0]);
    59615960        /* The returned string should never be able to be greater than our buffer */
     
    60286027    if (aFlags.isEmpty())
    60296028    {
    6030         vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", SET_PROP_VALUE_HOST,
    6031                                     2, &parm[0]);
     6029        vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_SET_PROP_VALUE_HOST, 2, &parm[0]);
    60326030    }
    60336031    else
     
    60376035        parm[2].u.pointer.size = (uint32_t)aFlags.length() + 1; /* The + 1 is the null terminator */
    60386036
    6039         vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", SET_PROP_HOST,
    6040                                       3, &parm[0]);
     6037        vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_SET_PROP_HOST, 3, &parm[0]);
    60416038    }
    60426039
     
    60736070    parm[0].u.pointer.size = (uint32_t)aName.length() + 1; /* The + 1 is the null terminator */
    60746071
    6075     int vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", DEL_PROP_HOST,
    6076                                       1, &parm[0]);
     6072    int vrc = m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_DEL_PROP_HOST, 1, &parm[0]);
    60776073
    60786074    HRESULT hrc = S_OK;
  • trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp

    r70035 r70058  
    59065906
    59075907#ifdef VBOX_WITH_GUEST_PROPS
     5908
    59085909/**
    59095910 * Set an array of guest properties
     
    59305931    parms[3].u.pointer.size = 0;  /* We don't actually care. */
    59315932
    5932     pVMMDev->hgcmHostCall("VBoxGuestPropSvc",
    5933                           guestProp::SET_PROPS_HOST,
    5934                           4,
    5935                           &parms[0]);
     5933    pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_SET_PROPS_HOST, 4, &parms[0]);
    59365934}
    59375935
     
    59585956    parms[2].u.pointer.addr = (void *)pszFlags;
    59595957    parms[2].u.pointer.size = (uint32_t)strlen(pszFlags) + 1;
    5960     pVMMDev->hgcmHostCall("VBoxGuestPropSvc", guestProp::SET_PROP_HOST, 3,
    5961                           &parms[0]);
     5958    pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_SET_PROP_HOST, 3, &parms[0]);
    59625959}
    59635960
     
    59695966 * @param   eFlags  the flags to set
    59705967 */
    5971 int configSetGlobalPropertyFlags(VMMDev * const pVMMDev,
    5972                                  guestProp::ePropFlags eFlags)
     5968int configSetGlobalPropertyFlags(VMMDev * const pVMMDev, uint32_t fFlags)
    59735969{
    59745970    VBOXHGCMSVCPARM paParm;
    5975     paParm.setUInt32(eFlags);
    5976     int rc = pVMMDev->hgcmHostCall("VBoxGuestPropSvc",
    5977                                    guestProp::SET_GLOBAL_FLAGS_HOST, 1,
    5978                                    &paParm);
     5971    paParm.setUInt32(fFlags);
     5972    int rc = pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_SET_GLOBAL_FLAGS_HOST, 1, &paParm);
    59795973    if (RT_FAILURE(rc))
    59805974    {
    5981         char szFlags[guestProp::MAX_FLAGS_LEN];
    5982         if (RT_FAILURE(writeFlags(eFlags, szFlags)))
     5975        char szFlags[GUEST_PROP_MAX_FLAGS_LEN];
     5976        if (RT_FAILURE(GuestPropWriteFlags(fFlags, szFlags)))
    59835977            Log(("Failed to set the global flags.\n"));
    59845978        else
     
    59875981    return rc;
    59885982}
     5983
    59895984#endif /* VBOX_WITH_GUEST_PROPS */
    59905985
     
    60206015        {
    60216016            VBOXHGCMSVCPARM Params[2];
    6022             int rc2 = pConsole->m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", guestProp::GET_DBGF_INFO_FN, 2, &Params[0]);
     6017            int rc2 = pConsole->m_pVMMDev->hgcmHostCall("VBoxGuestPropSvc", GUEST_PROP_FN_GET_DBGF_INFO_FN, 2, &Params[0]);
    60236018            if (RT_SUCCESS(rc2))
    60246019            {
     
    61346129
    61356130#ifdef VBOX_WITH_GUEST_PROPS_RDONLY_GUEST
    6136         rc = configSetGlobalPropertyFlags(pConsole->m_pVMMDev,
    6137                                           guestProp::RDONLYGUEST);
     6131        rc = configSetGlobalPropertyFlags(pConsole->m_pVMMDev, guestProp::RDONLYGUEST);
    61386132        AssertRCReturn(rc, rc);
    61396133#endif
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r68986 r70058  
    56545654    if (it != mHWData->mGuestProperties.end())
    56555655    {
    5656         char szFlags[MAX_FLAGS_LEN + 1];
     5656        char szFlags[GUEST_PROP_MAX_FLAGS_LEN + 1];
    56575657        aValue = it->second.strValue;
    56585658        *aTimestamp = it->second.mTimestamp;
    5659         writeFlags(it->second.mFlags, szFlags);
     5659        GuestPropWriteFlags(it->second.mFlags, szFlags);
    56605660        aFlags = Utf8Str(szFlags);
    56615661    }
     
    57525752    try
    57535753    {
    5754         uint32_t fFlags = NILFLAG;
    5755         if (aFlags.length() && RT_FAILURE(validateFlags(aFlags.c_str(), &fFlags)))
     5754        uint32_t fFlags = GUEST_PROP_F_NILFLAG;
     5755        if (aFlags.length() && RT_FAILURE(GuestPropValidateFlags(aFlags.c_str(), &fFlags)))
    57565756            return setError(E_INVALIDARG, tr("Invalid guest property flag values: '%s'"), aFlags.c_str());
    57575757
     
    57745774        else
    57755775        {
    5776             if (it->second.mFlags & (RDONLYHOST))
     5776            if (it->second.mFlags & (GUEST_PROP_F_RDONLYHOST))
    57775777            {
    57785778                rc = setError(E_ACCESSDENIED, tr("The property '%s' cannot be changed by the host"), aName.c_str());
     
    59365936    aFlags.resize(cEntries);
    59375937
    5938     char szFlags[MAX_FLAGS_LEN + 1];
     5938    char szFlags[GUEST_PROP_MAX_FLAGS_LEN + 1];
    59395939    size_t i = 0;
    59405940    for (HWData::GuestPropertyMap::const_iterator
     
    59465946        aValues[i] = it->second.strValue;
    59475947        aTimestamps[i] = it->second.mTimestamp;
    5948         writeFlags(it->second.mFlags, szFlags);
     5948        GuestPropWriteFlags(it->second.mFlags, szFlags);
    59495949        aFlags[i] = Utf8Str(szFlags);
    59505950    }
     
    91589158        {
    91599159            const settings::GuestProperty &prop = *it;
    9160             uint32_t fFlags = guestProp::NILFLAG;
    9161             guestProp::validateFlags(prop.strFlags.c_str(), &fFlags);
     9160            uint32_t fFlags = GUEST_PROP_F_NILFLAG;
     9161            GuestPropValidateFlags(prop.strFlags.c_str(), &fFlags);
    91629162            if (   fSkipTransientGuestProperties
    9163                 && (   fFlags & guestProp::TRANSIENT
    9164                     || fFlags & guestProp::TRANSRESET))
     9163                && (   fFlags & GUEST_PROP_F_TRANSIENT
     9164                    || fFlags & GUEST_PROP_F_TRANSRESET))
    91659165            {
    91669166                it = llGuestProperties.erase(it);
     
    1045410454                    || mData->mMachineState == MachineState_Aborted
    1045510455                    || mData->mMachineState == MachineState_Teleported)
    10456                 && (   property.mFlags & guestProp::TRANSIENT
    10457                     || property.mFlags & guestProp::TRANSRESET))
     10456                && (property.mFlags & (GUEST_PROP_F_TRANSIENT | GUEST_PROP_F_TRANSRESET)))
    1045810457                continue;
    10459             settings::GuestProperty prop;
     10458            settings::GuestProperty prop; /// @todo r=bird: some excellent variable name choices here: 'prop' and 'property'; No 'const' clue either.
    1046010459            prop.strName = it->first;
    1046110460            prop.strValue = property.strValue;
    1046210461            prop.timestamp = property.mTimestamp;
    10463             char szFlags[guestProp::MAX_FLAGS_LEN + 1];
    10464             guestProp::writeFlags(property.mFlags, szFlags);
     10462            char szFlags[GUEST_PROP_MAX_FLAGS_LEN + 1];
     10463            GuestPropWriteFlags(property.mFlags, szFlags);
    1046510464            prop.strFlags = szFlags;
    1046610465
     
    1354113540         ++it, ++i)
    1354213541    {
    13543         char szFlags[MAX_FLAGS_LEN + 1];
     13542        char szFlags[GUEST_PROP_MAX_FLAGS_LEN + 1];
    1354413543        aNames[i] = it->first;
    1354513544        aValues[i] = it->second.strValue;
     
    1354913548        if (it->second.mFlags)
    1355013549        {
    13551             writeFlags(it->second.mFlags, szFlags);
     13550            GuestPropWriteFlags(it->second.mFlags, szFlags);
    1355213551            aFlags[i] = szFlags;
    1355313552        }
     
    1357613575         * Convert input up front.
    1357713576         */
    13578         uint32_t fFlags = NILFLAG;
     13577        uint32_t fFlags = GUEST_PROP_F_NILFLAG;
    1357913578        if (aFlags.length())
    1358013579        {
    13581             int vrc = validateFlags(aFlags.c_str(), &fFlags);
     13580            int vrc = GuestPropValidateFlags(aFlags.c_str(), &fFlags);
    1358213581            AssertRCReturn(vrc, E_INVALIDARG);
    1358313582        }
     
    1480314802        {
    1480414803            uint32_t fFlags = it->second.mFlags;
    14805             if (   fFlags & guestProp::TRANSIENT
    14806                 || fFlags & guestProp::TRANSRESET)
     14804            if (fFlags & (GUEST_PROP_F_TRANSIENT | GUEST_PROP_F_TRANSRESET))
    1480714805            {
    1480814806                /* iterator where we need to continue after the erase call
Note: See TracChangeset for help on using the changeset viewer.

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