VirtualBox

Changeset 39493 in vbox for trunk/src/VBox/Main/src-client


Ignore:
Timestamp:
Dec 1, 2011 3:42:02 PM (13 years ago)
Author:
vboxsync
Message:

VRDP, Main: forward UTCINFO events as guest properties.

Location:
trunk/src/VBox/Main/src-client
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-client/ConsoleImpl.cpp

    r39435 r39493  
    809809}
    810810
     811void Console::guestPropertiesVRDPUpdateClientAttach(uint32_t u32ClientId, bool fAttached)
     812{
     813    if (!guestPropertiesVRDPEnabled())
     814        return;
     815
     816    Bstr bstrReadOnlyGuest(L"RDONLYGUEST");
     817
     818    char szPropNm[256];
     819    RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Attach", u32ClientId);
     820
     821    Bstr bstrValue = fAttached? "1": "0";
     822
     823    mMachine->SetGuestProperty(Bstr(szPropNm).raw(),
     824                               bstrValue.raw(),
     825                               bstrReadOnlyGuest.raw());
     826}
     827
    811828void Console::guestPropertiesVRDPUpdateDisconnect(uint32_t u32ClientId)
    812829{
     
    826843
    827844    RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Domain", u32ClientId);
     845    mMachine->SetGuestProperty(Bstr(szPropNm).raw(), NULL,
     846                               bstrReadOnlyGuest.raw());
     847
     848    RTStrPrintf(szPropNm, sizeof(szPropNm), "/VirtualBox/HostInfo/VRDP/Client/%u/Attach", u32ClientId);
    828849    mMachine->SetGuestProperty(Bstr(szPropNm).raw(), NULL,
    829850                               bstrReadOnlyGuest.raw());
     
    10881109}
    10891110
    1090 void Console::VRDPClientNameChange(uint32_t u32ClientId, const char *pszName)
     1111void Console::VRDPClientStatusChange(uint32_t u32ClientId, const char *pszStatus)
    10911112{
    10921113    LogFlowFuncEnter();
     
    10951116    AssertComRCReturnVoid(autoCaller.rc());
    10961117
    1097     guestPropertiesVRDPUpdateNameChange(u32ClientId, pszName);
     1118    /* Parse the status string. */
     1119    if (RTStrICmp(pszStatus, "ATTACH") == 0)
     1120    {
     1121        guestPropertiesVRDPUpdateClientAttach(u32ClientId, true);
     1122    }
     1123    else if (RTStrICmp(pszStatus, "DETACH") == 0)
     1124    {
     1125        guestPropertiesVRDPUpdateClientAttach(u32ClientId, false);
     1126    }
     1127    else if (RTStrNICmp(pszStatus, "NAME=", strlen("NAME=")) == 0)
     1128    {
     1129        guestPropertiesVRDPUpdateNameChange(u32ClientId, pszStatus + strlen("NAME="));
     1130    }
     1131
     1132    LogFlowFuncLeave();
    10981133}
    10991134
  • trunk/src/VBox/Main/src-client/ConsoleVRDPServer.cpp

    r39435 r39493  
    856856        } break;
    857857
    858         case VRDE_SP_CLIENT_NAME:
    859         {
    860             if (cbBuffer < sizeof(VRDECLIENTNAME))
     858        case VRDE_SP_CLIENT_STATUS:
     859        {
     860            if (cbBuffer < sizeof(VRDECLIENTSTATUS))
    861861            {
    862862                rc = VERR_INVALID_PARAMETER;
     
    864864            }
    865865
    866             size_t cbName = cbBuffer - RT_OFFSETOF(VRDECLIENTNAME, achName);
    867 
    868             VRDECLIENTNAME *pClientName = (VRDECLIENTNAME *)pvBuffer;
    869 
    870             size_t cchName = 0;
    871             rc = RTStrNLenEx(pClientName->achName, cbName, &cchName);
    872 
    873             if (RT_FAILURE(rc))
     866            size_t cbStatus = cbBuffer - RT_UOFFSETOF(VRDECLIENTSTATUS, achStatus);
     867
     868            VRDECLIENTSTATUS *pStatus = (VRDECLIENTSTATUS *)pvBuffer;
     869
     870            if (cbBuffer < RT_UOFFSETOF(VRDECLIENTSTATUS, achStatus) + pStatus->cbStatus)
    874871            {
    875872                rc = VERR_INVALID_PARAMETER;
     
    877874            }
    878875
    879             Log(("VRDE_SP_CLIENT_NAME [%s]\n", pClientName->achName));
    880 
    881             server->mConsole->VRDPClientNameChange(pClientName->u32ClientId, pClientName->achName);
     876            size_t cchStatus = 0;
     877            rc = RTStrNLenEx(pStatus->achStatus, cbStatus, &cchStatus);
     878
     879            if (RT_FAILURE(rc))
     880            {
     881                rc = VERR_INVALID_PARAMETER;
     882                break;
     883            }
     884
     885            Log(("VRDE_SP_CLIENT_STATUS [%s]\n", pStatus->achStatus));
     886
     887            server->mConsole->VRDPClientStatusChange(pStatus->u32ClientId, pStatus->achStatus);
    882888
    883889            rc = VINF_SUCCESS;
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