2 * processes.h: Process handles
5 * Dick Porter (dick@ximian.com)
7 * (C) 2002 Ximian, Inc.
10 #ifndef _WAPI_PROCESSES_H_
11 #define _WAPI_PROCESSES_H_
15 #include <mono/io-layer/handles.h>
16 #include <mono/io-layer/access.h>
21 STARTF_USESHOWWINDOW=0x001,
23 STARTF_USEPOSITION=0x004,
24 STARTF_USECOUNTCHARS=0x008,
25 STARTF_USEFILLATTRIBUTE=0x010,
26 STARTF_RUNFULLSCREEN=0x020,
27 STARTF_FORCEONFEEDBACK=0x040,
28 STARTF_FORCEOFFFEEDBACK=0x080,
29 STARTF_USESTDHANDLES=0x100
33 typedef struct _WapiStartupInfo WapiStartupInfo;
35 struct _WapiStartupInfo
45 guint32 dwXCountChars;
46 guint32 dwYCountChars;
47 guint32 dwFillAttribute;
48 WapiStartupFlags dwFlags;
57 typedef struct _WapiProcessInformation WapiProcessInformation;
59 struct _WapiProcessInformation
68 #define DEBUG_PROCESS 0x00000001
69 #define DEBUG_ONLY_THIS_PROCESS 0x00000002
70 #define CREATE_SUSPENDED 0x00000004
71 #define DETACHED_PROCESS 0x00000008
72 #define CREATE_NEW_CONSOLE 0x00000010
73 #define NORMAL_PRIORITY_CLASS 0x00000020
74 #define IDLE_PRIORITY_CLASS 0x00000040
75 #define HIGH_PRIORITY_CLASS 0x00000080
76 #define REALTIME_PRIORITY_CLASS 0x00000100
77 #define CREATE_NEW_PROCESS_GROUP 0x00000200
78 #define CREATE_UNICODE_ENVIRONMENT 0x00000400
79 #define CREATE_SEPARATE_WOW_VDM 0x00000800
80 #define CREATE_SHARED_WOW_VDM 0x00001000
81 #define CREATE_FORCEDOS 0x00002000
82 #define BELOW_NORMAL_PRIORITY_CLASS 0x00004000
83 #define ABOVE_NORMAL_PRIORITY_CLASS 0x00008000
84 #define CREATE_BREAKAWAY_FROM_JOB 0x01000000
85 #define CREATE_WITH_USERPROFILE 0x02000000
86 #define CREATE_DEFAULT_ERROR_MODE 0x04000000
87 #define CREATE_NO_WINDOW 0x08000000
90 #define CREATE_PRESERVE_CODE_AUTHZ_LEVEL find out the value for this one...
93 #define PROCESS_TERMINATE 0x0001
94 #define PROCESS_CREATE_THREAD 0x0002
95 #define PROCESS_SET_SESSIONID 0x0004
96 #define PROCESS_VM_OPERATION 0x0008
97 #define PROCESS_VM_READ 0x0010
98 #define PROCESS_VM_WRITE 0x0020
99 #define PROCESS_DUP_HANDLE 0x0040
100 #define PROCESS_CREATE_PROCESS 0x0080
101 #define PROCESS_SET_QUOTA 0x0100
102 #define PROCESS_SET_INFORMATION 0x0200
103 #define PROCESS_QUERY_INFORMATION 0x0400
104 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0xfff)
106 extern gboolean CreateProcess (const gunichar2 *appname, gunichar2 *cmdline,
107 WapiSecurityAttributes *process_attrs,
108 WapiSecurityAttributes *thread_attrs,
109 gboolean inherit_handles, guint32 create_flags,
110 gpointer environ, const gunichar2 *cwd,
111 WapiStartupInfo *startup,
112 WapiProcessInformation *process_info);
113 extern gpointer GetCurrentProcess (void);
114 extern guint32 GetCurrentProcessId (void);
115 extern gboolean EnumProcesses (guint32 *pids, guint32 len, guint32 *needed);
116 extern gpointer OpenProcess (guint32 access, gboolean inherit, guint32 pid);
117 extern gboolean GetExitCodeProcess (gpointer process, guint32 *code);
118 extern gboolean GetProcessTimes (gpointer process, WapiFileTime *create_time,
119 WapiFileTime *exit_time,
120 WapiFileTime *kernel_time,
121 WapiFileTime *user_time);
122 extern gboolean EnumProcessModules (gpointer process, gpointer *modules,
123 guint32 size, guint32 *needed);
124 extern guint32 GetModuleBaseName (gpointer process, gpointer module,
125 gunichar2 *basename, guint32 size);
126 extern gboolean GetProcessWorkingSetSize (gpointer process, size_t *min,
128 extern gboolean SetProcessWorkingSetSize (gpointer process, size_t min,
131 extern gboolean TerminateProcess (gpointer process, gint32 exitCode);
135 #endif /* _WAPI_PROCESSES_H_ */