Fix several bugs.


svn path=/branches/ntvdm/; revision=59502
This commit is contained in:
Aleksandar Andrejevic 2013-07-18 12:31:11 +00:00
parent 495320af6e
commit bac747f151
2 changed files with 15 additions and 10 deletions

View file

@ -398,7 +398,7 @@ BOOLEAN DosFreeMemory(WORD BlockData)
return TRUE;
}
BOOLEAN DosLinkUmb()
BOOLEAN DosLinkUmb(VOID)
{
DWORD Segment = FIRST_MCB_SEGMENT;
PDOS_MCB Mcb = SEGMENT_TO_MCB(Segment);
@ -423,7 +423,7 @@ BOOLEAN DosLinkUmb()
return TRUE;
}
BOOLEAN DosUnlinkUmb()
BOOLEAN DosUnlinkUmb(VOID)
{
DWORD Segment = FIRST_MCB_SEGMENT;
PDOS_MCB Mcb = SEGMENT_TO_MCB(Segment);
@ -895,6 +895,7 @@ Cleanup:
VOID DosTerminateProcess(WORD Psp, BYTE ReturnCode)
{
WORD i;
WORD McbSegment = FIRST_MCB_SEGMENT;
PDOS_MCB CurrentMcb;
LPDWORD IntVecTable = (LPDWORD)((ULONG_PTR)BaseAddress);
@ -903,7 +904,11 @@ VOID DosTerminateProcess(WORD Psp, BYTE ReturnCode)
/* Check if this PSP is it's own parent */
if (PspBlock->ParentPsp == Psp) goto Done;
// TODO: Close all handles opened by the process
for (i = 0; i < PspBlock->HandleTableSize; i++)
{
/* Close the handle */
DosCloseHandle(i);
}
/* Free the memory used by the process */
while (TRUE)
@ -942,7 +947,7 @@ Done:
LOWORD(PspBlock->TerminateAddress));
}
CHAR DosReadCharacter()
CHAR DosReadCharacter(VOID)
{
CHAR Character = '\0';
WORD BytesRead;
@ -1539,12 +1544,12 @@ VOID DosInt21h(WORD CodeSegment)
}
}
VOID DosBreakInterrupt()
VOID DosBreakInterrupt(VOID)
{
VdmRunning = FALSE;
}
BOOLEAN DosInitialize()
BOOLEAN DosInitialize(VOID)
{
BYTE i;
PDOS_MCB Mcb = SEGMENT_TO_MCB(FIRST_MCB_SEGMENT);

View file

@ -19,7 +19,7 @@
#define DOS_CONFIG_PATH L"%SystemRoot%\\system32\\CONFIG.NT"
#define DOS_COMMAND_INTERPRETER L"%SystemRoot%\\system32\\COMMAND.COM /k %SystemRoot%\\system32\\AUTOEXEC.NT"
#define FIRST_MCB_SEGMENT 0x1000
#define USER_MEMORY_SIZE 0x8FFF
#define USER_MEMORY_SIZE 0x8FFE
#define SYSTEM_PSP 0x08
#define SYSTEM_ENV_BLOCK 0x800
#define INVALID_DOS_HANDLE 0xFFFF
@ -103,12 +103,12 @@ WORD DosWriteFile(WORD FileHandle, LPVOID Buffer, WORD Count, LPWORD BytesWritte
VOID DosInitializePsp(WORD PspSegment, LPCSTR CommandLine, WORD ProgramSize, WORD Environment);
BOOLEAN DosCreateProcess(LPCSTR CommandLine, WORD EnvBlock);
VOID DosTerminateProcess(WORD Psp, BYTE ReturnCode);
CHAR DosReadCharacter();
CHAR DosReadCharacter(VOID);
VOID DosPrintCharacter(CHAR Character);
VOID DosInt20h(WORD CodeSegment);
VOID DosInt21h(WORD CodeSegment);
VOID DosBreakInterrupt();
BOOLEAN DosInitialize();
VOID DosBreakInterrupt(VOID);
BOOLEAN DosInitialize(VOID);
#endif