2 * COPYRIGHT: GPLv2 - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: dos/dos32krnl/process.h
5 * PURPOSE: DOS32 Processes
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
9 /* DEFINITIONS ****************************************************************/
11 #define DOS_CMDLINE_LENGTH 127
12 #define DOS_PROGRAM_NAME_TAG 0x0001
14 #define SEGMENT_TO_PSP(seg) ((PDOS_PSP)((ULONG_PTR)BaseAddress + TO_LINEAR((seg), 0)))
18 DOS_LOAD_AND_EXECUTE
= 0x00,
20 DOS_LOAD_OVERLAY
= 0x03
25 typedef struct _DOS_PSP
30 DWORD TerminateAddress
;
32 DWORD CriticalAddress
;
47 CHAR CommandLine
[DOS_CMDLINE_LENGTH
];
50 typedef struct _DOS_EXEC_PARAM_BLOCK
62 /* Output variables */
70 WORD RelocationFactor
;
73 } DOS_EXEC_PARAM_BLOCK
, *PDOS_EXEC_PARAM_BLOCK
;
75 typedef struct _DOS_REGISTER_STATE
79 DWORD EDI
, ESI
, EBP
, ESP
, EBX
, EDX
, ECX
, EAX
;
80 } DOS_REGISTER_STATE
, *PDOS_REGISTER_STATE
;
84 /* VARIABLES ******************************************************************/
86 extern WORD CurrentPsp
;
88 /* FUNCTIONS ******************************************************************/
90 VOID
DosClonePsp(WORD DestSegment
, WORD SourceSegment
);
91 VOID
DosCreatePsp(WORD Segment
, WORD ProgramSize
);
92 VOID
DosSetProcessContext(WORD Segment
);
94 DWORD DosLoadExecutable
96 IN DOS_EXEC_TYPE LoadType
,
97 IN LPCSTR ExecutablePath
,
98 IN PDOS_EXEC_PARAM_BLOCK Parameters
,
99 IN LPCSTR CommandLine OPTIONAL
,
100 IN LPCSTR Environment OPTIONAL
103 DWORD
DosStartProcess(
104 IN LPCSTR ExecutablePath
,
105 IN LPCSTR CommandLine
,
106 IN LPCSTR Environment OPTIONAL
109 WORD DosCreateProcess
112 PDOS_EXEC_PARAM_BLOCK Parameters
115 VOID
DosTerminateProcess(WORD Psp
, BYTE ReturnCode
, WORD KeepResident
);