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?r... ============================================================================== --- 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; } }