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/vdm.c?rev=63124&r1=63123&r2=63124&view=diff
==============================================================================
--- 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?rev=63124&r1=63123&r2=63124&view=diff
==============================================================================
--- 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;
         }
     }
 


Reply via email to