Index: /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModAPIMonitor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModAPIMonitor.cpp	(revision 43737)
+++ /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModAPIMonitor.cpp	(revision 43738)
@@ -389,10 +389,11 @@
 }
 
-static DECLCALLBACK(int) VBoxModAPIMonitorOption(int argc, char *argv[])
+static DECLCALLBACK(int) VBoxModAPIMonitorOption(int argc, char *argv[], int *piConsumed)
 {
     if (!argc) /* Take a shortcut. */
         return -1;
 
-    AssertPtrReturn(argv, VERR_INVALID_PARAMETER);
+    AssertPtrReturn(argv, VERR_INVALID_POINTER);
+    AssertPtrReturn(piConsumed, VERR_INVALID_POINTER);
 
     RTGETOPTSTATE GetState;
@@ -441,5 +442,10 @@
                 break;
         }
-    }
+
+        /* At the moment we only process one option at a time. */
+        break;
+    }
+
+    *piConsumed += GetState.iNext - 1;
 
     return rc;
Index: /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModBallooning.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModBallooning.cpp	(revision 43737)
+++ /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxModBallooning.cpp	(revision 43738)
@@ -346,10 +346,11 @@
 }
 
-static DECLCALLBACK(int) VBoxModBallooningOption(int argc, char *argv[])
+static DECLCALLBACK(int) VBoxModBallooningOption(int argc, char *argv[], int *piConsumed)
 {
     if (!argc) /* Take a shortcut. */
         return -1;
 
-    AssertPtrReturn(argv, VERR_INVALID_PARAMETER);
+    AssertPtrReturn(argv, VERR_INVALID_POINTER);
+    AssertPtrReturn(piConsumed, VERR_INVALID_POINTER);
 
     RTGETOPTSTATE GetState;
@@ -400,5 +401,10 @@
                 break;
         }
-    }
+
+        /* At the moment we only process one option at a time. */
+        break;
+    }
+
+    *piConsumed += GetState.iNext - 1;
 
     return rc;
Index: /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdog.cpp	(revision 43737)
+++ /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdog.cpp	(revision 43738)
@@ -1036,9 +1036,16 @@
                     for (unsigned j = 0; !fFound && j < RT_ELEMENTS(g_aModules); j++)
                     {
-                        rc = g_aModules[j].pDesc->pfnOption(1 /* Current value only. */,
-                                                            &argv[GetState.iNext - 1]);
+                        int iArgCnt = argc - GetState.iNext + 1;
+                        int iArgIndex = GetState.iNext - 1;
+                        int iConsumed = 0;
+                        rc = g_aModules[j].pDesc->pfnOption(iArgCnt,
+                                                            &argv[iArgIndex],
+                                                            &iConsumed);
                         fFound = rc == 0;
                         if (fFound)
+                        {
+                            GetState.iNext += iConsumed;
                             break;
+                        }
                         if (rc != -1)
                             return rc;
Index: /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdogInternal.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdogInternal.h	(revision 43737)
+++ /trunk/src/VBox/Frontends/VBoxBalloonCtrl/VBoxWatchdogInternal.h	(revision 43738)
@@ -144,6 +144,8 @@
      * @param   argc        Argument count.
      * @param   argv        Arguments.
-     */
-    DECLCALLBACKMEMBER(int, pfnOption)(int argc, char *argv[]);
+     * @param   piConsumed  How many parameters this callback consumed from the
+     *                      remaining arguments passed in.
+     */
+    DECLCALLBACKMEMBER(int, pfnOption)(int argc, char *argv[], int *piConsumed);
 
     /**
