[BASESRV][KERNEL32][NTVDM]
[reactos.git] / include / reactos / subsys / win / vdm.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Base API Server DLL
4 * FILE: include/reactos/subsys/win/vdm.h
5 * PURPOSE: Public definitions for the Virtual Dos Machine
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 * Alex Ionescu (alex.ionescu@reactos.org)
8 */
9
10 #ifndef _VDM_H
11 #define _VDM_H
12
13 #pragma once
14
15 /* CONSTANTS & TYPES **********************************************************/
16
17 typedef enum _VDM_ENTRY_CODE
18 {
19 VdmEntryUndo,
20 VdmEntryUpdateProcess,
21 VdmEntryUpdateControlCHandler
22 } VDM_ENTRY_CODE;
23
24 //
25 // Undo States
26 //
27 #define VDM_UNDO_PARTIAL 0x01
28 #define VDM_UNDO_FULL 0x02
29 #define VDM_UNDO_REUSE 0x04
30 #define VDM_UNDO_COMPLETED 0x08
31
32 //
33 // Binary Types to share with VDM
34 //
35 #define BINARY_TYPE_EXE 0x01
36 #define BINARY_TYPE_COM 0x02
37 #define BINARY_TYPE_PIF 0x03
38 #define BINARY_TYPE_DOS 0x10
39 #define BINARY_TYPE_SEPARATE_WOW 0x20
40 #define BINARY_TYPE_WOW 0x40
41 #define BINARY_TYPE_WOW_EX 0x80
42
43 //
44 // VDM States
45 //
46 #define VDM_NOT_LOADED 0x01
47 #define VDM_NOT_READY 0x02
48 #define VDM_READY 0x04
49
50 //
51 // VDM Flags
52 //
53 #define VDM_FLAG_FIRST_TASK 0x01
54 #define VDM_FLAG_WOW 0x02
55 #define VDM_FLAG_DOS 0x04
56 #define VDM_FLAG_RETRY 0x08
57 #define VDM_INC_REENTER_COUNT 0x10
58 #define VDM_DEC_REENTER_COUNT 0x20
59 #define VDM_FLAG_NESTED_TASK 0x40
60 #define VDM_FLAG_DONT_WAIT 0x80
61 #define VDM_GET_FIRST_COMMAND 0x100
62 #define VDM_GET_ENVIRONMENT 0x400
63 #define VDM_FLAG_SEPARATE_WOW 0x800
64 #define VDM_LIST_WOW_PROCESSES 0x1000
65 #define VDM_LIST_WOW_TASKS 0x4000
66 #define VDM_ADD_WOW_TASK 0x8000
67
68 typedef struct
69 {
70 ULONG TaskId;
71 ULONG CreationFlags;
72 ULONG ExitCode;
73 ULONG CodePage;
74 HANDLE StdIn;
75 HANDLE StdOut;
76 HANDLE StdErr;
77 LPSTR CmdLine;
78 LPSTR AppName;
79 LPSTR PifFile;
80 LPSTR CurDirectory;
81 LPSTR Env;
82 ULONG EnvLen;
83 STARTUPINFOA StartupInfo;
84 LPSTR Desktop;
85 ULONG DesktopLen;
86 LPSTR Title;
87 ULONG TitleLen;
88 LPVOID Reserved;
89 ULONG ReservedLen;
90 USHORT CmdLen;
91 USHORT AppLen;
92 USHORT PifLen;
93 USHORT CurDirectoryLen;
94 USHORT VDMState;
95 USHORT CurrentDrive;
96 BOOLEAN ComingFromBat;
97 } VDM_COMMAND_INFO, *PVDM_COMMAND_INFO;
98
99
100 /* FUNCTION PROTOTYPES ********************************************************/
101
102 BOOL
103 WINAPI
104 GetNextVDMCommand(
105 IN OUT PVDM_COMMAND_INFO CommandData OPTIONAL
106 );
107
108 VOID
109 WINAPI
110 ExitVDM(
111 IN BOOL IsWow,
112 IN ULONG iWowTask
113 );
114
115 #endif // _VDM_H
116
117 /* EOF */