update readme (#21797)
[mono-project.git] / mono / metadata / w32process.h
blob4c512e0ff230bd1c6115ef1025c1986245bb5d39
1 /**
2 * \file
3 * System.Diagnostics.Process support
5 * Author:
6 * Dick Porter (dick@ximian.com)
8 * (C) 2002 Ximian, Inc.
9 */
11 #ifndef _MONO_METADATA_W32PROCESS_H_
12 #define _MONO_METADATA_W32PROCESS_H_
14 #include <config.h>
15 #include <glib.h>
17 #if HAVE_SYS_TYPES_H
18 #include <sys/types.h>
19 #endif
21 #include <mono/metadata/object.h>
22 #include "object-internals.h"
23 #include "marshal.h"
25 typedef enum {
26 MONO_W32PROCESS_PRIORITY_CLASS_NORMAL = 0x0020,
27 MONO_W32PROCESS_PRIORITY_CLASS_IDLE = 0x0040,
28 MONO_W32PROCESS_PRIORITY_CLASS_HIGH = 0x0080,
29 MONO_W32PROCESS_PRIORITY_CLASS_REALTIME = 0x0100,
30 MONO_W32PROCESS_PRIORITY_CLASS_BELOW_NORMAL = 0x4000,
31 MONO_W32PROCESS_PRIORITY_CLASS_ABOVE_NORMAL = 0x8000,
32 } MonoW32ProcessPriorityClass;
34 typedef struct
36 gpointer process_handle;
37 guint32 pid; /* Contains mono_w32error_get_last () on failure */
38 MonoArray *env_variables;
39 MonoString *username;
40 MonoString *domain;
41 mono_bstr password; /* BSTR from SecureString in 2.0 profile */
42 MonoBoolean load_user_profile;
43 } MonoW32ProcessInfo;
45 typedef struct
47 MonoObject object;
48 MonoString *filename;
49 MonoString *arguments;
50 MonoString *working_directory;
51 MonoString *verb;
52 guint32 window_style;
53 MonoBoolean error_dialog;
54 gpointer error_dialog_parent_handle;
55 MonoBoolean use_shell_execute;
57 MonoString *unused_username;
58 MonoString *unused_domain;
59 MonoObject *unused_password; /* SecureString in 2.0 profile, dummy in 1.x */
60 MonoString *unused_password_in_clear_text;
61 MonoBoolean unused_load_user_profile;
62 MonoBoolean unused_redirect_standard_input;
63 MonoBoolean unused_redirect_standard_output;
64 MonoBoolean unused_redirect_standard_error;
65 MonoObject *unused_encoding_stdout;
66 MonoObject *unused_encoding_stderr;
68 MonoBoolean create_no_window;
70 MonoObject *unused_weak_parent_process;
71 MonoObject *unused_envVars;
73 } MonoW32ProcessStartInfo;
75 TYPED_HANDLE_DECL (MonoW32ProcessStartInfo);
77 typedef struct _MonoCreateProcessCoop {
78 gunichar2 *filename;
79 gunichar2 *arguments;
80 gunichar2 *working_directory;
81 gunichar2 *verb;
82 gunichar2 *username;
83 gunichar2 *domain;
84 struct {
85 MonoStringHandle filename;
86 MonoStringHandle arguments;
87 MonoStringHandle working_directory;
88 MonoStringHandle verb;
89 MonoStringHandle username;
90 MonoStringHandle domain;
91 } coophandle;
92 struct {
93 MonoGCHandle filename;
94 MonoGCHandle arguments;
95 MonoGCHandle working_directory;
96 MonoGCHandle verb;
97 MonoGCHandle username;
98 MonoGCHandle domain;
99 } gchandle;
100 struct {
101 gsize filename;
102 gsize arguments;
103 gsize working_directory;
104 gsize verb;
105 gsize username;
106 gsize domain;
107 } length;
108 } MonoCreateProcessCoop;
110 void
111 mono_createprocess_coop_init (MonoCreateProcessCoop *coop, MonoW32ProcessStartInfoHandle proc_start_info, MonoW32ProcessInfo *process_info);
113 void
114 mono_createprocess_coop_cleanup (MonoCreateProcessCoop *coop);
116 void
117 mono_w32process_init (void);
119 void
120 mono_w32process_cleanup (void);
122 void
123 mono_w32process_signal_finished (void);
125 #ifndef HOST_WIN32
127 void
128 mono_w32process_set_cli_launcher (gchar *path);
130 gchar*
131 mono_w32process_get_path (pid_t pid);
133 #endif
134 #endif /* _MONO_METADATA_W32PROCESS_H_ */