Author: aandrejevic
Date: Sat May  3 02:13:51 2014
New Revision: 63124
URL: 
http://svn.reactos.org/svn/reactos?rev=63124&view=rev
Log:
[KERNEL32][NTVDM]
In BaseCheckVDM, return a task ID of 0 if there is a console.
In CommandThreadProc, make sure the loop executes at least once.
Also, if a session ID is given, there is no parent console, so there is no need to wait
for further commands.
Modified:
    branches/ntvdm/dll/win32/kernel32/client/vdm.c
    branches/ntvdm/subsystems/ntvdm/ntvdm.c
Modified: branches/ntvdm/dll/win32/kernel32/client/vdm.c
URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/dll/win32/kernel32/client…
==============================================================================
--- branches/ntvdm/dll/win32/kernel32/client/vdm.c      [iso-8859-1] (original)
+++ branches/ntvdm/dll/win32/kernel32/client/vdm.c      [iso-8859-1] Sat May  3 02:13:51
2014
@@ -401,8 +401,17 @@
                                  CSR_CREATE_API_NUMBER(BASESRV_SERVERDLL_INDEX,
BasepCheckVDM),
                                  sizeof(BASE_CHECK_VDM));
-    /* Write back the task ID */
-    *iTask = CheckVdm->iTask;
+    /* Check if there is no console */
+    if (CheckVdm->ConsoleHandle == NULL)
+    {
+        /* Write back the task ID */
+        *iTask = CheckVdm->iTask;
+    }
+    else
+    {
+        /* Otherwise, iTask should be zero */
+        *iTask = 0;
+    }
 Cleanup:
Modified: branches/ntvdm/subsystems/ntvdm/ntvdm.c
URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/subsystems/ntvdm/ntvdm.c?…
==============================================================================
--- branches/ntvdm/subsystems/ntvdm/ntvdm.c     [iso-8859-1] (original)
+++ branches/ntvdm/subsystems/ntvdm/ntvdm.c     [iso-8859-1] Sat May  3 02:13:51 2014
@@ -377,7 +377,7 @@
     UNREFERENCED_PARAMETER(Parameter);
-    while (AcceptCommands)
+    do
     {
         /* Clear the structure */
         ZeroMemory(&CommandInfo, sizeof(CommandInfo));
@@ -431,6 +431,7 @@
         First = FALSE;
     }
+    while (AcceptCommands);
     return 0;
 }
@@ -468,6 +469,9 @@
         {
             /* This is the session ID */
             SessionId = wcstoul(argv[i] + 2, &endptr, 10);
+
+            /* The VDM hasn't been started from a console, so quit when the task is
done */
+            AcceptCommands = FALSE;
         }
     }