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') {