grammar updates
[mono.git] / mono / io-layer / processes.h
1 /*
2  * processes.h:  Process handles
3  *
4  * Author:
5  *      Dick Porter (dick@ximian.com)
6  *
7  * (C) 2002 Ximian, Inc.
8  */
9
10 #ifndef _WAPI_PROCESSES_H_
11 #define _WAPI_PROCESSES_H_
12
13 #include <glib.h>
14
15 #include <mono/io-layer/handles.h>
16 #include <mono/io-layer/access.h>
17
18 typedef enum {
19         STARTF_USESHOWWINDOW=0x001,
20         STARTF_USESIZE=0x002,
21         STARTF_USEPOSITION=0x004,
22         STARTF_USECOUNTCHARS=0x008,
23         STARTF_USEFILLATTRIBUTE=0x010,
24         STARTF_RUNFULLSCREEN=0x020,
25         STARTF_FORCEONFEEDBACK=0x040,
26         STARTF_FORCEOFFFEEDBACK=0x080,
27         STARTF_USESTDHANDLES=0x100,
28 } WapiStartupFlags;
29
30
31 typedef struct _WapiStartupInfo WapiStartupInfo;
32
33 struct _WapiStartupInfo 
34 {
35         guint32 cb;
36         guchar *lpReserved;
37         guchar *lpDesktop;
38         guchar *lpTitle;
39         guint32 dwX;
40         guint32 dwY;
41         guint32 dwXSize;
42         guint32 dwYSize;
43         guint32 dwXCountChars;
44         guint32 dwYCountChars;
45         guint32 dwFillAttribute;
46         WapiStartupFlags dwFlags;
47         guint16 wShowWindow;
48         guint16 cbReserved2;
49         guint8 *lpReserved2;
50         gpointer hStdInput;
51         gpointer hStdOutput;
52         gpointer hStdError;
53 };
54
55 typedef struct _WapiProcessInformation WapiProcessInformation;
56
57 struct _WapiProcessInformation 
58 {
59         gpointer hProcess;
60         gpointer hThread;
61         guint32 dwProcessId;
62         guint32 dwThreadId;
63 };
64
65         
66 #define DEBUG_PROCESS 0x00000001
67 #define DEBUG_ONLY_THIS_PROCESS 0x00000002
68 #define CREATE_SUSPENDED 0x00000004
69 #define DETACHED_PROCESS 0x00000008
70 #define CREATE_NEW_CONSOLE 0x00000010
71 #define NORMAL_PRIORITY_CLASS 0x00000020
72 #define IDLE_PRIORITY_CLASS 0x00000040
73 #define HIGH_PRIORITY_CLASS 0x00000080
74 #define REALTIME_PRIORITY_CLASS 0x00000100
75 #define CREATE_NEW_PROCESS_GROUP 0x00000200
76 #define CREATE_UNICODE_ENVIRONMENT 0x00000400
77 #define CREATE_SEPARATE_WOW_VDM 0x00000800
78 #define CREATE_SHARED_WOW_VDM 0x00001000
79 #define CREATE_FORCEDOS 0x00002000
80 #define BELOW_NORMAL_PRIORITY_CLASS 0x00004000
81 #define ABOVE_NORMAL_PRIORITY_CLASS 0x00008000
82 #define CREATE_BREAKAWAY_FROM_JOB 0x01000000
83 #define CREATE_WITH_USERPROFILE 0x02000000
84 #define CREATE_DEFAULT_ERROR_MODE 0x04000000
85 #define CREATE_NO_WINDOW 0x08000000
86
87 #ifdef NEW_STUFF
88 #define CREATE_PRESERVE_CODE_AUTHZ_LEVEL find out the value for this one...
89 #endif
90
91 #define PROCESS_TERMINATE               0x0001
92 #define PROCESS_CREATE_THREAD           0x0002
93 #define PROCESS_SET_SESSIONID           0x0004
94 #define PROCESS_VM_OPERATION            0x0008
95 #define PROCESS_VM_READ                 0x0010
96 #define PROCESS_VM_WRITE                0x0020
97 #define PROCESS_DUP_HANDLE              0x0040
98 #define PROCESS_CREATE_PROCESS          0x0080
99 #define PROCESS_SET_QUOTA               0x0100
100 #define PROCESS_SET_INFORMATION         0x0200
101 #define PROCESS_QUERY_INFORMATION       0x0400
102 #define PROCESS_ALL_ACCESS              (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xfff)
103
104 extern gboolean CreateProcess (const gunichar2 *appname, gunichar2 *cmdline,
105                                WapiSecurityAttributes *process_attrs,
106                                WapiSecurityAttributes *thread_attrs,
107                                gboolean inherit_handles, guint32 create_flags,
108                                gpointer environ, const gunichar2 *cwd,
109                                WapiStartupInfo *startup,
110                                WapiProcessInformation *process_info);
111 extern gpointer GetCurrentProcess (void);
112 extern guint32 GetCurrentProcessId (void);
113 extern gboolean EnumProcesses (guint32 *pids, guint32 len, guint32 *needed);
114 extern gpointer OpenProcess (guint32 access, gboolean inherit, guint32 pid);
115 extern gboolean GetExitCodeProcess (gpointer process, guint32 *code);
116 extern gboolean GetProcessTimes (gpointer process, WapiFileTime *create_time,
117                                  WapiFileTime *exit_time,
118                                  WapiFileTime *kernel_time,
119                                  WapiFileTime *user_time);
120 extern gboolean EnumProcessModules (gpointer process, gpointer *modules,
121                                     guint32 size, guint32 *needed);
122 extern guint32 GetModuleBaseName (gpointer process, gpointer module,
123                                   gunichar2 *basename, guint32 size);
124 extern gboolean GetProcessWorkingSetSize (gpointer process, size_t *min,
125                                           size_t *max);
126 extern gboolean SetProcessWorkingSetSize (gpointer process, size_t min,
127                                           size_t max);
128
129 #endif /* _WAPI_PROCESSES_H_ */