VirtualBox

Changeset 84814 in vbox for trunk


Ignore:
Timestamp:
Jun 12, 2020 12:43:02 PM (4 years ago)
Author:
vboxsync
Message:

Guest Control: Also implemented a "force" flag for the reboot/shutdown command. bugref:9320

Location:
trunk/src/VBox
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp

    r84731 r84814  
    10191019        else
    10201020        {
    1021             rc = RTSystemShutdown(0 /*cMsDelay*/,
    1022                                   fAction | RTSYSTEM_SHUTDOWN_PLANNED,
    1023                                   "VBoxService");
     1021            int fSystemShutdown = RTSYSTEM_SHUTDOWN_PLANNED;
     1022
     1023            /* Translate GuestShutdownFlag_XXX into RTSYSTEM_SHUTDOWN_ flags. */
     1024            if (fAction & GuestShutdownFlag_Reboot)
     1025                fSystemShutdown |= RTSYSTEM_SHUTDOWN_REBOOT;
     1026            else
     1027                fSystemShutdown |= RTSYSTEM_SHUTDOWN_POWER_OFF;
     1028
     1029            if (fAction & GuestShutdownFlag_Force)
     1030                fSystemShutdown |= RTSYSTEM_SHUTDOWN_FORCE;
     1031
     1032            rc = RTSystemShutdown(0 /*cMsDelay*/, fSystemShutdown, "VBoxService");
    10241033            if (RT_FAILURE(rc))
    10251034                VGSvcError("%s system failed with %Rrc\n",
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r84585 r84814  
    693693
    694694            com::SafeArray<GuestShutdownFlag_T> aShutdownFlags;
    695             aShutdownFlags.resize(1);
    696 
    697695            if (fReboot)
    698696                aShutdownFlags.push_back(GuestShutdownFlag_Reboot);
    699697            else
    700698                aShutdownFlags.push_back(GuestShutdownFlag_PowerOff);
     699
     700            if (   a->argc >= 3
     701                && !strcmp(a->argv[2], "--force"))
     702                aShutdownFlags.push_back(GuestShutdownFlag_Force);
     703
    701704            CHECK_ERROR(pGuest, Shutdown(ComSafeArrayAsInParam(aShutdownFlags)));
    702705            if (FAILED(rc))
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r84576 r84814  
    834834                     "                            pause|resume|reset|poweroff|savestate|\n"
    835835#ifdef VBOX_WITH_GUEST_CONTROL
    836                      "                            reboot|shutdown|\n"
     836                     "                            reboot|shutdown [--force]|\n"
    837837#endif
    838838                     "                            acpipowerbutton|acpisleepbutton|\n"
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r84740 r84814  
    1179111791  <enum
    1179211792    name="GuestShutdownFlag"
    11793     uuid="587309CD-DDDA-4619-82B0-4B764D9D3BC1"
     11793    uuid="28D19C9C-5862-4930-B29A-F117712B4864"
    1179411794  >
    1179511795    <desc>
     
    1180511805    <const name="Reboot"                    value="2">
    1180611806      <desc>Performs a reboot after shutdown.</desc>
     11807    </const>
     11808    <const name="Force"                     value="4">
     11809      <desc>Force the system to shutdown/reboot regardless of objecting
     11810        application or other stuff. This flag might not be realized on
     11811        all systems.</desc>
    1180711812    </const>
    1180811813  </enum>
  • trunk/src/VBox/Main/src-client/GuestCtrlImpl.cpp

    r84585 r84814  
    505505            fFlags |= aFlags[i];
    506506
    507     const uint32_t fValidFlags = GuestShutdownFlag_None | GuestShutdownFlag_PowerOff | GuestShutdownFlag_Reboot;
     507    const uint32_t fValidFlags = GuestShutdownFlag_None
     508                               | GuestShutdownFlag_PowerOff | GuestShutdownFlag_Reboot | GuestShutdownFlag_Force;
    508509    if (fFlags & ~fValidFlags)
    509510        return setError(E_INVALIDARG,tr("Unknown flags: flags value %#x, invalid: %#x"), fFlags, fFlags & ~fValidFlags);
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