1 /* 2 * COPYRIGHT: GPL - See COPYING in the top level directory 3 * PROJECT: ReactOS Virtual DOS Machine 4 * FILE: subsystems/mvdm/ntvdm/ntvdm.h 5 * PURPOSE: Header file to define commonly used stuff 6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org> 7 */ 8 9 #ifndef _NTVDM_H_ 10 #define _NTVDM_H_ 11 12 /* INCLUDES *******************************************************************/ 13 14 #include <stdio.h> 15 #include <stdarg.h> 16 #include <wchar.h> 17 18 /* PSDK/NDK Headers */ 19 #define WIN32_NO_STATUS 20 #include <windef.h> 21 #include <winbase.h> 22 #include <wingdi.h> 23 #include <wincon.h> 24 #include <winnls.h> 25 #include <winreg.h> 26 #include <winuser.h> 27 #include <commdlg.h> 28 29 #include <subsys/win/vdm.h> 30 31 // Do not include stuff that is only defined 32 // for backwards compatibility in nt_vdd.h 33 #define NO_NTVDD_COMPAT 34 #include <vddsvc.h> 35 36 DWORD WINAPI SetLastConsoleEventActive(VOID); 37 38 #define NTOS_MODE_USER 39 #include <ndk/kefuncs.h> 40 #include <ndk/mmfuncs.h> 41 #include <ndk/obfuncs.h> 42 #include <ndk/rtlfuncs.h> 43 #include <ndk/rtltypes.h> 44 45 /* PSEH for SEH Support */ 46 #include <pseh/pseh2.h> 47 48 /* 49 * Activate this line if you want to run NTVDM in standalone mode with: 50 * ntvdm.exe <program> 51 */ 52 // #define STANDALONE 53 54 /* 55 * Activate this line for Win2k compliancy 56 */ 57 // #define WIN2K_COMPLIANT 58 59 /* 60 * Activate this line if you want advanced hardcoded debug facilities 61 * (called interrupts, etc...), that break PC-AT compatibility. 62 * USE AT YOUR OWN RISK! (disabled by default) 63 */ 64 // #define ADVANCED_DEBUGGING 65 66 #ifdef ADVANCED_DEBUGGING 67 #define ADVANCED_DEBUGGING_LEVEL 1 68 #endif 69 70 71 /* VARIABLES ******************************************************************/ 72 73 typedef struct _NTVDM_SETTINGS 74 { 75 ANSI_STRING BiosFileName; 76 ANSI_STRING RomFiles; 77 UNICODE_STRING FloppyDisks[2]; 78 UNICODE_STRING HardDisks[4]; 79 } NTVDM_SETTINGS, *PNTVDM_SETTINGS; 80 81 extern NTVDM_SETTINGS GlobalSettings; 82 83 // Command line of NTVDM 84 extern INT NtVdmArgc; 85 extern WCHAR** NtVdmArgv; 86 87 extern HWND hConsoleWnd; 88 89 90 /* FUNCTIONS ******************************************************************/ 91 92 /* 93 * Interface functions 94 */ 95 typedef VOID (*CHAR_PRINT)(IN CHAR Character); 96 VOID DisplayMessage(IN LPCWSTR Format, ...); 97 VOID PrintMessageAnsi(IN CHAR_PRINT CharPrint, 98 IN LPCSTR Format, ...); 99 100 /*static*/ VOID 101 UpdateVdmMenuDisks(VOID); 102 103 BOOL ConsoleAttach(VOID); 104 VOID ConsoleDetach(VOID); 105 VOID ConsoleReattach(HANDLE ConOutHandle); 106 VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent); 107 VOID FocusEventHandler(PFOCUS_EVENT_RECORD FocusEvent); 108 109 #endif // _NTVDM_H_ 110 111 /* EOF */ 112