1 /* $Id: ntvdm.c,v 1.1 2002/10/28 13:59:59 robd Exp $
3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: subsys/ntvdm/ntvdm.c
6 * PURPOSE: Virtual DOS Machine
7 * PROGRAMMER: Robert Dickenson (robd@mok.lvcm.com)
12 /* INCLUDES *****************************************************************/
22 /* GLOBALS ******************************************************************/
25 /* FUNCTIONS *****************************************************************/
27 void PrintString(char* fmt
,...)
33 vsprintf(buffer
, fmt
, ap
);
36 OutputDebugString(buffer
);
53 SetVDMCurrentDirectories
67 StartVirtualMachine(VOID
)
70 STARTUPINFO StartupInfo
;
71 PROCESS_INFORMATION ProcessInformation
;
72 CHAR CommandLine
[MAX_PATH
];
73 CHAR CurrentDirectory
[MAX_PATH
];
75 GetSystemDirectory(CommandLine
, MAX_PATH
);
76 strcat(CommandLine
, "\\hello.exe");
77 GetWindowsDirectory(CurrentDirectory
, MAX_PATH
);
79 StartupInfo
.cb
= sizeof(StartupInfo
);
80 StartupInfo
.lpReserved
= NULL
;
81 StartupInfo
.lpDesktop
= NULL
;
82 StartupInfo
.lpTitle
= NULL
;
83 StartupInfo
.dwFlags
= 0;
84 StartupInfo
.cbReserved2
= 0;
85 StartupInfo
.lpReserved2
= 0;
87 Result
= CreateProcess(CommandLine
,
98 PrintString("WL: Failed to execute target process\n");
101 WaitForSingleObject(ProcessInformation
.hProcess
, INFINITE
);
102 CloseHandle(ProcessInformation
.hProcess
);
103 CloseHandle(ProcessInformation
.hThread
);
108 WinMain(HINSTANCE hInstance
, HINSTANCE hPrevInstance
, LPSTR lpCmdLine
, int nShowCmd
)
115 CHAR WelcomeMsg
[] = "ReactOS Virtual DOS Machine support.\nType q<cr> to quit.";
116 CHAR InputBuffer
[255];
119 SetConsoleTitle("ntvdm");
120 StartVirtualMachine();
123 WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE
),
124 WelcomeMsg
, strlen(WelcomeMsg
), // wcslen(WelcomeMsg),
128 ReadConsole(GetStdHandle(STD_INPUT_HANDLE
),
131 if (++i
>= (sizeof(InputBuffer
) - 1)) {
134 } while (InputBuffer
[i
- 1] != '\n');
135 InputBuffer
[i
- 1] = '\0';
137 if (InputBuffer
[0] == 'q' || InputBuffer
[0] == 'Q') {