VirtualBox

Changeset 23607 in vbox


Ignore:
Timestamp:
Oct 7, 2009 7:57:48 PM (15 years ago)
Author:
vboxsync
Message:

VBoxService: Added additional status reporting for sequential host scripts/programs.

File:
1 edited

Legend:

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

    r23575 r23607  
    389389                                VBoxServiceVerbose(3, "Exec: sysprep argv[%u]: \"%s\"\n", i, papszArgs[i]);
    390390
     391                            /*
     392                             * Status reporting via SysprepVBoxRC is required here in order to make a host program wait for it
     393                             * in any case (here, yet before the execution or down below if something failed). If no SysprepVBoxRC
     394                             * would be updated here the host wouldn't know if he now has to wait for SysprepRet (all succeded) or
     395                             * SysprepRC (something failed):
     396                             *
     397                             * 1. Host sets SysprepArgs
     398                             * 2. Host waits for a changing SysprepRC (this could be either here or in step 5)
     399                             * 3. If SysprepRC is successful go to 4, otherwise exit
     400                             * 4. Host waits for a changing SysprepRet (result of sysprep.exe execution)
     401                             * 5. Host waits for a changing SysprepRC (final result of operation)
     402                             */
     403                            rc = VBoxServiceWritePropF(g_uExecGuestPropSvcClientID, "/VirtualBox/HostGuest/SysprepVBoxRC", "%d", rc);
     404                            if (RT_FAILURE(rc))
     405                                VBoxServiceError("Exec: Failed to write SysprepVBoxRC while setting up: rc=%Rrc\n", rc);
     406
    391407                            RTPROCESS pid;
    392                             rc = RTProcCreate(pszSysprepExec, papszArgs, RTENV_DEFAULT, 0 /*fFlags*/, &pid);
     408                            if (RT_SUCCESS(rc))
     409                                rc = RTProcCreate(pszSysprepExec, papszArgs, RTENV_DEFAULT, 0 /*fFlags*/, &pid);
    393410                            if (RT_SUCCESS(rc))
    394411                            {
     
    455472                rc = VBoxServiceWritePropF(g_uExecGuestPropSvcClientID, "/VirtualBox/HostGuest/SysprepVBoxRC", "%d", rc);
    456473                if (RT_FAILURE(rc))
    457                     VBoxServiceError("Exec: Failed to write SysprepVBoxRC: rc=%Rrc\n", rc);
     474                    VBoxServiceError("Exec: Failed to write final SysprepVBoxRC: rc=%Rrc\n", rc);
    458475            }
    459476        }
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