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;
}
}