[BASESRV]

Don't update the state of the old DOS records if the DOS program executed another program.


svn path=/branches/ntvdm/; revision=63039
This commit is contained in:
Aleksandar Andrejevic 2014-04-28 20:51:59 +00:00
parent 3031b351e8
commit dd049f9da3

View file

@ -850,18 +850,20 @@ CSR_API(BaseSrvGetNextVDMCommand)
GetNextVdmCommandRequest->iTask = ConsoleRecord->SessionId;
GetNextVdmCommandRequest->WaitObjectForVDM = NULL;
// HACK: I'm not sure if this should happen...
for (i = ConsoleRecord->DosListHead.Flink; i != &ConsoleRecord->DosListHead; i = i->Flink)
if (!(GetNextVdmCommandRequest->VDMState & VDM_NOT_READY))
{
DosRecord = CONTAINING_RECORD(i, VDM_DOS_RECORD, Entry);
if (DosRecord->State == VDM_NOT_READY)
for (i = ConsoleRecord->DosListHead.Flink; i != &ConsoleRecord->DosListHead; i = i->Flink)
{
/* If NTVDM is asking for a new command, it means these are done */
DosRecord->State = VDM_READY;
DosRecord = CONTAINING_RECORD(i, VDM_DOS_RECORD, Entry);
if (DosRecord->State == VDM_NOT_READY)
{
/* If NTVDM is asking for a new command, it means these are done */
DosRecord->State = VDM_READY;
NtSetEvent(DosRecord->ServerEvent, NULL);
NtClose(DosRecord->ServerEvent);
DosRecord->ServerEvent = NULL;
NtSetEvent(DosRecord->ServerEvent, NULL);
NtClose(DosRecord->ServerEvent);
DosRecord->ServerEvent = NULL;
}
}
}