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.
svn path=/branches/ntvdm/; revision=63124
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:
UNREFERENCED_PARAMETER(Parameter);
- while (AcceptCommands)
+ do
{
/* Clear the structure */
ZeroMemory(&CommandInfo, sizeof(CommandInfo));
First = FALSE;
}
+ while (AcceptCommands);
return 0;
}
{
/* 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;
}
}