]>
Commit | Line | Data |
---|---|---|
b32b8144 FG |
1 | /* |
2 | * Copyright 2016 Klemens D. Morgenstern | |
3 | * Copyright 2016, 2017 Andrey Semashev | |
4 | * | |
5 | * Distributed under the Boost Software License, Version 1.0. | |
6 | * See http://www.boost.org/LICENSE_1_0.txt | |
7 | */ | |
8 | ||
9 | #ifndef BOOST_WINAPI_PROCESS_HPP_INCLUDED_ | |
10 | #define BOOST_WINAPI_PROCESS_HPP_INCLUDED_ | |
11 | ||
12 | #include <boost/winapi/config.hpp> | |
13 | #include <boost/winapi/basic_types.hpp> | |
14 | #include <boost/winapi/access_rights.hpp> | |
15 | #include <boost/winapi/get_current_process.hpp> | |
16 | #include <boost/winapi/get_current_process_id.hpp> | |
7c673cae FG |
17 | |
18 | #ifdef BOOST_HAS_PRAGMA_ONCE | |
19 | #pragma once | |
20 | #endif | |
21 | ||
7c673cae FG |
22 | #if !defined( BOOST_USE_WINDOWS_H ) |
23 | extern "C" { | |
24 | ||
92f5a8d4 | 25 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM |
7c673cae FG |
26 | struct _PROCESS_INFORMATION; |
27 | #if !defined( BOOST_NO_ANSI_APIS ) | |
28 | struct _STARTUPINFOA; | |
29 | #endif | |
30 | struct _STARTUPINFOW; | |
92f5a8d4 | 31 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM |
7c673cae FG |
32 | |
33 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 | |
92f5a8d4 TL |
34 | |
35 | #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM | |
7c673cae | 36 | struct _PROC_THREAD_ATTRIBUTE_LIST; |
92f5a8d4 TL |
37 | #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM |
38 | ||
b32b8144 | 39 | #if BOOST_WINAPI_PARTITION_DESKTOP |
7c673cae FG |
40 | #if !defined( BOOST_NO_ANSI_APIS ) |
41 | struct _STARTUPINFOEXA; | |
42 | #endif | |
43 | struct _STARTUPINFOEXW; | |
b32b8144 | 44 | #endif // BOOST_WINAPI_PARTITION_DESKTOP |
7c673cae | 45 | |
92f5a8d4 TL |
46 | #endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 |
47 | ||
48 | #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM | |
49 | ||
50 | BOOST_SYMBOL_IMPORT BOOST_NORETURN boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC | |
b32b8144 | 51 | ExitProcess(boost::winapi::UINT_ uExitCode); |
7c673cae | 52 | |
92f5a8d4 | 53 | BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC GetExitCodeProcess( |
b32b8144 FG |
54 | boost::winapi::HANDLE_ hProcess, |
55 | boost::winapi::LPDWORD_ lpExitCode); | |
7c673cae FG |
56 | |
57 | #if !defined( BOOST_NO_ANSI_APIS ) | |
92f5a8d4 | 58 | BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC CreateProcessA( |
b32b8144 FG |
59 | boost::winapi::LPCSTR_ lpApplicationName, |
60 | boost::winapi::LPSTR_ lpCommandLine, | |
7c673cae FG |
61 | ::_SECURITY_ATTRIBUTES* lpProcessAttributes, |
62 | ::_SECURITY_ATTRIBUTES* lpThreadAttributes, | |
b32b8144 FG |
63 | boost::winapi::INT_ bInheritHandles, |
64 | boost::winapi::DWORD_ dwCreationFlags, | |
65 | boost::winapi::LPVOID_ lpEnvironment, | |
66 | boost::winapi::LPCSTR_ lpCurrentDirectory, | |
7c673cae FG |
67 | ::_STARTUPINFOA* lpStartupInfo, |
68 | ::_PROCESS_INFORMATION* lpProcessInformation); | |
69 | #endif | |
70 | ||
92f5a8d4 | 71 | BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC CreateProcessW( |
b32b8144 FG |
72 | boost::winapi::LPCWSTR_ lpApplicationName, |
73 | boost::winapi::LPWSTR_ lpCommandLine, | |
7c673cae FG |
74 | ::_SECURITY_ATTRIBUTES* lpProcessAttributes, |
75 | ::_SECURITY_ATTRIBUTES* lpThreadAttributes, | |
b32b8144 FG |
76 | boost::winapi::INT_ bInheritHandles, |
77 | boost::winapi::DWORD_ dwCreationFlags, | |
78 | boost::winapi::LPVOID_ lpEnvironment, | |
79 | boost::winapi::LPCWSTR_ lpCurrentDirectory, | |
7c673cae FG |
80 | ::_STARTUPINFOW* lpStartupInfo, |
81 | ::_PROCESS_INFORMATION* lpProcessInformation); | |
82 | ||
b32b8144 FG |
83 | #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM |
84 | ||
85 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM | |
86 | ||
92f5a8d4 | 87 | BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenProcess( |
b32b8144 FG |
88 | boost::winapi::DWORD_ dwDesiredAccess, |
89 | boost::winapi::BOOL_ bInheritHandle, | |
90 | boost::winapi::DWORD_ dwProcessId); | |
91 | ||
92f5a8d4 | 92 | BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC TerminateProcess( |
b32b8144 FG |
93 | boost::winapi::HANDLE_ hProcess, |
94 | boost::winapi::UINT_ uExitCode); | |
95 | ||
96 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM | |
7c673cae FG |
97 | |
98 | } // extern "C" | |
b32b8144 | 99 | #endif // defined BOOST_WINDOWS_H |
7c673cae FG |
100 | |
101 | namespace boost { | |
7c673cae FG |
102 | namespace winapi { |
103 | ||
104 | #if defined( BOOST_USE_WINDOWS_H ) | |
105 | ||
b32b8144 FG |
106 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM |
107 | ||
92f5a8d4 TL |
108 | BOOST_CONSTEXPR_OR_CONST DWORD_ DEBUG_PROCESS_ = DEBUG_PROCESS; |
109 | BOOST_CONSTEXPR_OR_CONST DWORD_ DEBUG_ONLY_THIS_PROCESS_ = DEBUG_ONLY_THIS_PROCESS; | |
110 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_SUSPENDED_ = CREATE_SUSPENDED; | |
111 | BOOST_CONSTEXPR_OR_CONST DWORD_ DETACHED_PROCESS_ = DETACHED_PROCESS; | |
112 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_CONSOLE_ = CREATE_NEW_CONSOLE; | |
113 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_PROCESS_GROUP_ = CREATE_NEW_PROCESS_GROUP; | |
114 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_UNICODE_ENVIRONMENT_ = CREATE_UNICODE_ENVIRONMENT; | |
115 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_SEPARATE_WOW_VDM_ = CREATE_SEPARATE_WOW_VDM; | |
116 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_SHARED_WOW_VDM_ = CREATE_SHARED_WOW_VDM; | |
117 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_FORCEDOS_ = CREATE_FORCEDOS; | |
118 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_BREAKAWAY_FROM_JOB_ = CREATE_BREAKAWAY_FROM_JOB; | |
119 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_DEFAULT_ERROR_MODE_ = CREATE_DEFAULT_ERROR_MODE; | |
120 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NO_WINDOW_ = CREATE_NO_WINDOW; | |
7c673cae FG |
121 | |
122 | // Undocumented | |
92f5a8d4 TL |
123 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROFILE_USER_ = PROFILE_USER; |
124 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROFILE_KERNEL_ = PROFILE_KERNEL; | |
125 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROFILE_SERVER_ = PROFILE_SERVER; | |
7c673cae FG |
126 | |
127 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 | |
92f5a8d4 TL |
128 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PROTECTED_PROCESS_ = CREATE_PROTECTED_PROCESS; |
129 | BOOST_CONSTEXPR_OR_CONST DWORD_ EXTENDED_STARTUPINFO_PRESENT_ = EXTENDED_STARTUPINFO_PRESENT; | |
7c673cae FG |
130 | #endif |
131 | ||
132 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7 | |
92f5a8d4 | 133 | BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_PARENT_AFFINITY_ = INHERIT_PARENT_AFFINITY; |
7c673cae FG |
134 | #endif |
135 | ||
136 | // Only documented for Windows CE | |
137 | #if defined(UNDER_CE) | |
92f5a8d4 | 138 | BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_CALLER_PRIORITY_ = INHERIT_CALLER_PRIORITY; |
7c673cae FG |
139 | #endif |
140 | ||
b32b8144 FG |
141 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM |
142 | ||
143 | #if BOOST_WINAPI_PARTITION_DESKTOP | |
144 | ||
92f5a8d4 TL |
145 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USESHOWWINDOW_ = STARTF_USESHOWWINDOW; |
146 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USESIZE_ = STARTF_USESIZE; | |
147 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USEPOSITION_ = STARTF_USEPOSITION; | |
148 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USECOUNTCHARS_ = STARTF_USECOUNTCHARS; | |
149 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USEFILLATTRIBUTE_ = STARTF_USEFILLATTRIBUTE; | |
150 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_RUNFULLSCREEN_ = STARTF_RUNFULLSCREEN; | |
151 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_FORCEONFEEDBACK_ = STARTF_FORCEONFEEDBACK; | |
152 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_FORCEOFFFEEDBACK_ = STARTF_FORCEOFFFEEDBACK; | |
153 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USESTDHANDLES_ = STARTF_USESTDHANDLES; | |
154 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USEHOTKEY_ = STARTF_USEHOTKEY; | |
7c673cae FG |
155 | |
156 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7 | |
92f5a8d4 TL |
157 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_TITLEISLINKNAME_ = STARTF_TITLEISLINKNAME; |
158 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_TITLEISAPPID_ = STARTF_TITLEISAPPID; | |
159 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_PREVENTPINNING_ = STARTF_PREVENTPINNING; | |
7c673cae FG |
160 | #endif |
161 | ||
b32b8144 FG |
162 | #endif // BOOST_WINAPI_PARTITION_DESKTOP |
163 | ||
92f5a8d4 TL |
164 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_TERMINATE_ = PROCESS_TERMINATE; |
165 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_CREATE_THREAD_ = PROCESS_CREATE_THREAD; | |
166 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SET_SESSIONID_ = PROCESS_SET_SESSIONID; | |
167 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_VM_OPERATION_ = PROCESS_VM_OPERATION; | |
168 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_VM_READ_ = PROCESS_VM_READ; | |
169 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_VM_WRITE_ = PROCESS_VM_WRITE; | |
170 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_DUP_HANDLE_ = PROCESS_DUP_HANDLE; | |
171 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_CREATE_PROCESS_ = PROCESS_CREATE_PROCESS; | |
172 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SET_QUOTA_ = PROCESS_SET_QUOTA; | |
173 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SET_INFORMATION_ = PROCESS_SET_INFORMATION; | |
174 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_QUERY_INFORMATION_ = PROCESS_QUERY_INFORMATION; | |
175 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SUSPEND_RESUME_ = PROCESS_SUSPEND_RESUME; | |
176 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_ALL_ACCESS_ = PROCESS_ALL_ACCESS; | |
7c673cae FG |
177 | |
178 | #else // defined( BOOST_USE_WINDOWS_H ) | |
179 | ||
b32b8144 FG |
180 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM |
181 | ||
92f5a8d4 TL |
182 | BOOST_CONSTEXPR_OR_CONST DWORD_ DEBUG_PROCESS_ = 0x1; |
183 | BOOST_CONSTEXPR_OR_CONST DWORD_ DEBUG_ONLY_THIS_PROCESS_ = 0x2; | |
184 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_SUSPENDED_ = 0x4; | |
185 | BOOST_CONSTEXPR_OR_CONST DWORD_ DETACHED_PROCESS_ = 0x8; | |
186 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_CONSOLE_ = 0x10; | |
187 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_PROCESS_GROUP_ = 0x200; | |
188 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_UNICODE_ENVIRONMENT_ = 0x400; | |
189 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_SEPARATE_WOW_VDM_ = 0x800; | |
190 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_SHARED_WOW_VDM_ = 0x1000; | |
191 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_FORCEDOS_ = 0x2000; | |
192 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_BREAKAWAY_FROM_JOB_ = 0x1000000; | |
193 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_DEFAULT_ERROR_MODE_ = 0x4000000; | |
194 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NO_WINDOW_ = 0x8000000; | |
7c673cae FG |
195 | |
196 | // Undocumented | |
92f5a8d4 TL |
197 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROFILE_USER_ = 0x10000000; |
198 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROFILE_KERNEL_ = 0x20000000; | |
199 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROFILE_SERVER_ = 0x40000000; | |
7c673cae FG |
200 | |
201 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 | |
92f5a8d4 TL |
202 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PROTECTED_PROCESS_ = 0x40000; |
203 | BOOST_CONSTEXPR_OR_CONST DWORD_ EXTENDED_STARTUPINFO_PRESENT_ = 0x80000; | |
7c673cae FG |
204 | #endif |
205 | ||
206 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7 | |
92f5a8d4 | 207 | BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_PARENT_AFFINITY_ = 0x10000; |
7c673cae FG |
208 | #endif |
209 | ||
210 | // Only documented for Windows CE | |
211 | #if defined(UNDER_CE) | |
92f5a8d4 | 212 | BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_CALLER_PRIORITY_ = 0x20000; |
7c673cae FG |
213 | #endif |
214 | ||
b32b8144 FG |
215 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM |
216 | ||
217 | #if BOOST_WINAPI_PARTITION_DESKTOP | |
218 | ||
92f5a8d4 TL |
219 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USESHOWWINDOW_ = 0x00000001; |
220 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USESIZE_ = 0x00000002; | |
221 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USEPOSITION_ = 0x00000004; | |
222 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USECOUNTCHARS_ = 0x00000008; | |
223 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USEFILLATTRIBUTE_ = 0x00000010; | |
224 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_RUNFULLSCREEN_ = 0x00000020; | |
225 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_FORCEONFEEDBACK_ = 0x00000040; | |
226 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_FORCEOFFFEEDBACK_ = 0x00000080; | |
227 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USESTDHANDLES_ = 0x00000100; | |
228 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_USEHOTKEY_ = 0x00000200; | |
7c673cae FG |
229 | |
230 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7 | |
92f5a8d4 TL |
231 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_TITLEISLINKNAME_ = 0x00000800; |
232 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_TITLEISAPPID_ = 0x00001000; | |
233 | BOOST_CONSTEXPR_OR_CONST DWORD_ STARTF_PREVENTPINNING_ = 0x00002000; | |
7c673cae FG |
234 | #endif |
235 | ||
b32b8144 FG |
236 | #endif // BOOST_WINAPI_PARTITION_DESKTOP |
237 | ||
92f5a8d4 TL |
238 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_TERMINATE_ = 0x0001; |
239 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_CREATE_THREAD_ = 0x0002; | |
240 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SET_SESSIONID_ = 0x0004; | |
241 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_VM_OPERATION_ = 0x0008; | |
242 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_VM_READ_ = 0x0010; | |
243 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_VM_WRITE_ = 0x0020; | |
244 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_DUP_HANDLE_ = 0x0040; | |
245 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_CREATE_PROCESS_ = 0x0080; | |
246 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SET_QUOTA_ = 0x0100; | |
247 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SET_INFORMATION_ = 0x0200; | |
248 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_QUERY_INFORMATION_ = 0x0400; | |
249 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_SUSPEND_RESUME_ = 0x0800; | |
250 | BOOST_CONSTEXPR_OR_CONST DWORD_ PROCESS_ALL_ACCESS_ = (STANDARD_RIGHTS_REQUIRED_ | SYNCHRONIZE_ | | |
251 | #if BOOST_USE_NTDDI_VERSION >= BOOST_WINAPI_NTDDI_WIN6 | |
252 | 0xFFFF | |
253 | #else | |
254 | 0x0FFF | |
255 | #endif | |
256 | ); | |
7c673cae FG |
257 | |
258 | #endif // defined( BOOST_USE_WINDOWS_H ) | |
259 | ||
b32b8144 FG |
260 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM |
261 | ||
7c673cae FG |
262 | #if defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW ) |
263 | ||
92f5a8d4 | 264 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PRESERVE_CODE_AUTHZ_LEVEL_ = CREATE_PRESERVE_CODE_AUTHZ_LEVEL; |
7c673cae FG |
265 | |
266 | // Undocumented | |
92f5a8d4 | 267 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_IGNORE_SYSTEM_DEFAULT_ = CREATE_IGNORE_SYSTEM_DEFAULT; |
7c673cae FG |
268 | |
269 | #else // defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW ) | |
270 | ||
92f5a8d4 | 271 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PRESERVE_CODE_AUTHZ_LEVEL_ = 0x2000000; |
7c673cae FG |
272 | |
273 | // Undocumented | |
92f5a8d4 | 274 | BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_IGNORE_SYSTEM_DEFAULT_ = 0x80000000; |
7c673cae FG |
275 | |
276 | #endif // defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW ) | |
277 | ||
b32b8144 FG |
278 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM |
279 | ||
92f5a8d4 TL |
280 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM |
281 | ||
b32b8144 | 282 | typedef struct BOOST_MAY_ALIAS _PROCESS_INFORMATION { |
7c673cae FG |
283 | HANDLE_ hProcess; |
284 | HANDLE_ hThread; | |
285 | DWORD_ dwProcessId; | |
286 | DWORD_ dwThreadId; | |
287 | } PROCESS_INFORMATION_, *PPROCESS_INFORMATION_, *LPPROCESS_INFORMATION_; | |
288 | ||
92f5a8d4 | 289 | #if !defined(BOOST_NO_ANSI_APIS) |
b32b8144 | 290 | typedef struct BOOST_MAY_ALIAS _STARTUPINFOA { |
7c673cae FG |
291 | DWORD_ cb; |
292 | LPSTR_ lpReserved; | |
293 | LPSTR_ lpDesktop; | |
294 | LPSTR_ lpTitle; | |
295 | DWORD_ dwX; | |
296 | DWORD_ dwY; | |
297 | DWORD_ dwXSize; | |
298 | DWORD_ dwYSize; | |
299 | DWORD_ dwXCountChars; | |
300 | DWORD_ dwYCountChars; | |
301 | DWORD_ dwFillAttribute; | |
302 | DWORD_ dwFlags; | |
303 | WORD_ wShowWindow; | |
304 | WORD_ cbReserved2; | |
305 | LPBYTE_ lpReserved2; | |
306 | HANDLE_ hStdInput; | |
307 | HANDLE_ hStdOutput; | |
308 | HANDLE_ hStdError; | |
309 | } STARTUPINFOA_, *LPSTARTUPINFOA_; | |
92f5a8d4 | 310 | #endif // !defined(BOOST_NO_ANSI_APIS) |
7c673cae | 311 | |
b32b8144 | 312 | typedef struct BOOST_MAY_ALIAS _STARTUPINFOW { |
7c673cae FG |
313 | DWORD_ cb; |
314 | LPWSTR_ lpReserved; | |
315 | LPWSTR_ lpDesktop; | |
316 | LPWSTR_ lpTitle; | |
317 | DWORD_ dwX; | |
318 | DWORD_ dwY; | |
319 | DWORD_ dwXSize; | |
320 | DWORD_ dwYSize; | |
321 | DWORD_ dwXCountChars; | |
322 | DWORD_ dwYCountChars; | |
323 | DWORD_ dwFillAttribute; | |
324 | DWORD_ dwFlags; | |
325 | WORD_ wShowWindow; | |
326 | WORD_ cbReserved2; | |
327 | LPBYTE_ lpReserved2; | |
328 | HANDLE_ hStdInput; | |
329 | HANDLE_ hStdOutput; | |
330 | HANDLE_ hStdError; | |
331 | } STARTUPINFOW_, *LPSTARTUPINFOW_; | |
332 | ||
92f5a8d4 TL |
333 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM |
334 | ||
7c673cae FG |
335 | #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 |
336 | ||
92f5a8d4 | 337 | #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM |
7c673cae | 338 | typedef struct _PROC_THREAD_ATTRIBUTE_LIST PROC_THREAD_ATTRIBUTE_LIST_, *PPROC_THREAD_ATTRIBUTE_LIST_; |
92f5a8d4 | 339 | #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM |
7c673cae | 340 | |
b32b8144 FG |
341 | #if BOOST_WINAPI_PARTITION_DESKTOP |
342 | ||
7c673cae | 343 | #if !defined(BOOST_NO_ANSI_APIS) |
b32b8144 | 344 | typedef struct BOOST_MAY_ALIAS _STARTUPINFOEXA { |
7c673cae FG |
345 | STARTUPINFOA_ StartupInfo; |
346 | PPROC_THREAD_ATTRIBUTE_LIST_ lpAttributeList; | |
347 | } STARTUPINFOEXA_, *LPSTARTUPINFOEXA_; | |
b32b8144 | 348 | #endif // !defined(BOOST_NO_ANSI_APIS) |
7c673cae | 349 | |
b32b8144 | 350 | typedef struct BOOST_MAY_ALIAS _STARTUPINFOEXW { |
7c673cae FG |
351 | STARTUPINFOW_ StartupInfo; |
352 | PPROC_THREAD_ATTRIBUTE_LIST_ lpAttributeList; | |
353 | } STARTUPINFOEXW_, *LPSTARTUPINFOEXW_; | |
354 | ||
b32b8144 FG |
355 | #endif // BOOST_WINAPI_PARTITION_DESKTOP |
356 | ||
7c673cae FG |
357 | #endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6 |
358 | ||
b32b8144 FG |
359 | #if BOOST_WINAPI_PARTITION_APP_SYSTEM |
360 | ||
7c673cae FG |
361 | using ::TerminateProcess; |
362 | using ::OpenProcess; | |
363 | ||
b32b8144 FG |
364 | #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM |
365 | ||
366 | #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM | |
367 | ||
368 | using ::GetExitCodeProcess; | |
369 | using ::ExitProcess; | |
370 | ||
7c673cae FG |
371 | #if !defined( BOOST_NO_ANSI_APIS ) |
372 | BOOST_FORCEINLINE BOOL_ CreateProcessA( | |
373 | LPCSTR_ lpApplicationName, | |
374 | LPSTR_ lpCommandLine, | |
375 | LPSECURITY_ATTRIBUTES_ lpProcessAttributes, | |
376 | LPSECURITY_ATTRIBUTES_ lpThreadAttributes, | |
377 | INT_ bInheritHandles, | |
378 | DWORD_ dwCreationFlags, | |
379 | LPVOID_ lpEnvironment, | |
380 | LPCSTR_ lpCurrentDirectory, | |
381 | LPSTARTUPINFOA_ lpStartupInfo, | |
382 | LPPROCESS_INFORMATION_ lpProcessInformation) | |
383 | { | |
384 | return ::CreateProcessA( | |
385 | lpApplicationName, | |
386 | lpCommandLine, | |
387 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpProcessAttributes), | |
388 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpThreadAttributes), | |
389 | bInheritHandles, | |
390 | dwCreationFlags, | |
391 | lpEnvironment, | |
392 | lpCurrentDirectory, | |
393 | reinterpret_cast< ::_STARTUPINFOA* >(lpStartupInfo), | |
394 | reinterpret_cast< ::_PROCESS_INFORMATION* >(lpProcessInformation)); | |
395 | } | |
396 | ||
397 | BOOST_FORCEINLINE BOOL_ create_process( | |
398 | LPCSTR_ lpApplicationName, | |
399 | LPSTR_ lpCommandLine, | |
400 | LPSECURITY_ATTRIBUTES_ lpProcessAttributes, | |
401 | LPSECURITY_ATTRIBUTES_ lpThreadAttributes, | |
402 | INT_ bInheritHandles, | |
403 | DWORD_ dwCreationFlags, | |
404 | LPVOID_ lpEnvironment, | |
405 | LPCSTR_ lpCurrentDirectory, | |
406 | LPSTARTUPINFOA_ lpStartupInfo, | |
407 | LPPROCESS_INFORMATION_ lpProcessInformation) | |
408 | { | |
409 | return ::CreateProcessA( | |
410 | lpApplicationName, | |
411 | lpCommandLine, | |
412 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpProcessAttributes), | |
413 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpThreadAttributes), | |
414 | bInheritHandles, | |
415 | dwCreationFlags, | |
416 | lpEnvironment, | |
417 | lpCurrentDirectory, | |
418 | reinterpret_cast< ::_STARTUPINFOA* >(lpStartupInfo), | |
419 | reinterpret_cast< ::_PROCESS_INFORMATION* >(lpProcessInformation)); | |
420 | } | |
421 | #endif | |
422 | ||
423 | BOOST_FORCEINLINE BOOL_ CreateProcessW( | |
424 | LPCWSTR_ lpApplicationName, | |
425 | LPWSTR_ lpCommandLine, | |
426 | LPSECURITY_ATTRIBUTES_ lpProcessAttributes, | |
427 | LPSECURITY_ATTRIBUTES_ lpThreadAttributes, | |
428 | INT_ bInheritHandles, | |
429 | DWORD_ dwCreationFlags, | |
430 | LPVOID_ lpEnvironment, | |
431 | LPCWSTR_ lpCurrentDirectory, | |
432 | LPSTARTUPINFOW_ lpStartupInfo, | |
433 | LPPROCESS_INFORMATION_ lpProcessInformation) | |
434 | { | |
435 | return ::CreateProcessW( | |
436 | lpApplicationName, | |
437 | lpCommandLine, | |
438 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpProcessAttributes), | |
439 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpThreadAttributes), | |
440 | bInheritHandles, | |
441 | dwCreationFlags, | |
442 | lpEnvironment, | |
443 | lpCurrentDirectory, | |
444 | reinterpret_cast< ::_STARTUPINFOW* >(lpStartupInfo), | |
445 | reinterpret_cast< ::_PROCESS_INFORMATION* >(lpProcessInformation)); | |
446 | } | |
447 | ||
448 | BOOST_FORCEINLINE BOOL_ create_process( | |
449 | LPCWSTR_ lpApplicationName, | |
450 | LPWSTR_ lpCommandLine, | |
451 | LPSECURITY_ATTRIBUTES_ lpProcessAttributes, | |
452 | LPSECURITY_ATTRIBUTES_ lpThreadAttributes, | |
453 | INT_ bInheritHandles, | |
454 | DWORD_ dwCreationFlags, | |
455 | LPVOID_ lpEnvironment, | |
456 | LPCWSTR_ lpCurrentDirectory, | |
457 | LPSTARTUPINFOW_ lpStartupInfo, | |
458 | LPPROCESS_INFORMATION_ lpProcessInformation) | |
459 | { | |
460 | return ::CreateProcessW( | |
461 | lpApplicationName, | |
462 | lpCommandLine, | |
463 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpProcessAttributes), | |
464 | reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpThreadAttributes), | |
465 | bInheritHandles, | |
466 | dwCreationFlags, | |
467 | lpEnvironment, | |
468 | lpCurrentDirectory, | |
469 | reinterpret_cast< ::_STARTUPINFOW* >(lpStartupInfo), | |
470 | reinterpret_cast< ::_PROCESS_INFORMATION* >(lpProcessInformation)); | |
471 | } | |
472 | ||
b32b8144 FG |
473 | #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM |
474 | ||
7c673cae FG |
475 | } |
476 | } | |
7c673cae | 477 | |
b32b8144 | 478 | #endif // BOOST_WINAPI_PROCESS_HPP_INCLUDED_ |