[NTVDM]
[reactos.git] / reactos / subsystems / mvdm / ntvdm / ntvdm.h
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 #include <debug.h>
49
50 /*
51 * Activate this line if you want to run NTVDM in standalone mode with:
52 * ntvdm.exe <program>
53 */
54 // #define STANDALONE
55
56 /*
57 * Activate this line for Win2k compliancy
58 */
59 // #define WIN2K_COMPLIANT
60
61 /*
62 * Activate this line if you want advanced hardcoded debug facilities
63 * (called interrupts, etc...), that break PC-AT compatibility.
64 * USE AT YOUR OWN RISK! (disabled by default)
65 */
66 // #define ADVANCED_DEBUGGING
67
68 #ifdef ADVANCED_DEBUGGING
69 #define ADVANCED_DEBUGGING_LEVEL 1
70 #endif
71
72
73 /* VARIABLES ******************************************************************/
74
75 typedef struct _NTVDM_SETTINGS
76 {
77 ANSI_STRING BiosFileName;
78 ANSI_STRING RomFiles;
79 ANSI_STRING FloppyDisks[2];
80 ANSI_STRING HardDisks[4];
81 } NTVDM_SETTINGS, *PNTVDM_SETTINGS;
82
83 extern NTVDM_SETTINGS GlobalSettings;
84
85 // Command line of NTVDM
86 extern INT NtVdmArgc;
87 extern WCHAR** NtVdmArgv;
88
89 extern HWND hConsoleWnd;
90
91
92 /* FUNCTIONS ******************************************************************/
93
94 /*
95 * Interface functions
96 */
97 typedef VOID (*CHAR_PRINT)(IN CHAR Character);
98 VOID DisplayMessage(IN LPCWSTR Format, ...);
99 VOID PrintMessageAnsi(IN CHAR_PRINT CharPrint,
100 IN LPCSTR Format, ...);
101
102 /*static*/ VOID
103 CreateVdmMenu(HANDLE ConOutHandle);
104 /*static*/ VOID
105 DestroyVdmMenu(VOID);
106
107 BOOL ConsoleAttach(VOID);
108 VOID ConsoleDetach(VOID);
109 VOID MenuEventHandler(PMENU_EVENT_RECORD MenuEvent);
110 VOID FocusEventHandler(PFOCUS_EVENT_RECORD FocusEvent);
111
112 #endif // _NTVDM_H_
113
114 /* EOF */