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>
17
18 #ifdef BOOST_HAS_PRAGMA_ONCE
19 #pragma once
20 #endif
21
22 #if !defined( BOOST_USE_WINDOWS_H )
23 extern "C" {
24
25 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
26 struct _PROCESS_INFORMATION;
27 #if !defined( BOOST_NO_ANSI_APIS )
28 struct _STARTUPINFOA;
29 #endif
30 struct _STARTUPINFOW;
31 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
32
33 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
34
35 #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
36 struct _PROC_THREAD_ATTRIBUTE_LIST;
37 #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
38
39 #if BOOST_WINAPI_PARTITION_DESKTOP
40 #if !defined( BOOST_NO_ANSI_APIS )
41 struct _STARTUPINFOEXA;
42 #endif
43 struct _STARTUPINFOEXW;
44 #endif // BOOST_WINAPI_PARTITION_DESKTOP
45
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
51 ExitProcess(boost::winapi::UINT_ uExitCode);
52
53 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC GetExitCodeProcess(
54 boost::winapi::HANDLE_ hProcess,
55 boost::winapi::LPDWORD_ lpExitCode);
56
57 #if !defined( BOOST_NO_ANSI_APIS )
58 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC CreateProcessA(
59 boost::winapi::LPCSTR_ lpApplicationName,
60 boost::winapi::LPSTR_ lpCommandLine,
61 ::_SECURITY_ATTRIBUTES* lpProcessAttributes,
62 ::_SECURITY_ATTRIBUTES* lpThreadAttributes,
63 boost::winapi::INT_ bInheritHandles,
64 boost::winapi::DWORD_ dwCreationFlags,
65 boost::winapi::LPVOID_ lpEnvironment,
66 boost::winapi::LPCSTR_ lpCurrentDirectory,
67 ::_STARTUPINFOA* lpStartupInfo,
68 ::_PROCESS_INFORMATION* lpProcessInformation);
69 #endif
70
71 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC CreateProcessW(
72 boost::winapi::LPCWSTR_ lpApplicationName,
73 boost::winapi::LPWSTR_ lpCommandLine,
74 ::_SECURITY_ATTRIBUTES* lpProcessAttributes,
75 ::_SECURITY_ATTRIBUTES* lpThreadAttributes,
76 boost::winapi::INT_ bInheritHandles,
77 boost::winapi::DWORD_ dwCreationFlags,
78 boost::winapi::LPVOID_ lpEnvironment,
79 boost::winapi::LPCWSTR_ lpCurrentDirectory,
80 ::_STARTUPINFOW* lpStartupInfo,
81 ::_PROCESS_INFORMATION* lpProcessInformation);
82
83 #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
84
85 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
86
87 BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenProcess(
88 boost::winapi::DWORD_ dwDesiredAccess,
89 boost::winapi::BOOL_ bInheritHandle,
90 boost::winapi::DWORD_ dwProcessId);
91
92 BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC TerminateProcess(
93 boost::winapi::HANDLE_ hProcess,
94 boost::winapi::UINT_ uExitCode);
95
96 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
97
98 } // extern "C"
99 #endif // defined BOOST_WINDOWS_H
100
101 namespace boost {
102 namespace winapi {
103
104 #if defined( BOOST_USE_WINDOWS_H )
105
106 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
107
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;
121
122 // Undocumented
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;
126
127 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
128 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PROTECTED_PROCESS_ = CREATE_PROTECTED_PROCESS;
129 BOOST_CONSTEXPR_OR_CONST DWORD_ EXTENDED_STARTUPINFO_PRESENT_ = EXTENDED_STARTUPINFO_PRESENT;
130 #endif
131
132 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7
133 BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_PARENT_AFFINITY_ = INHERIT_PARENT_AFFINITY;
134 #endif
135
136 // Only documented for Windows CE
137 #if defined(UNDER_CE)
138 BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_CALLER_PRIORITY_ = INHERIT_CALLER_PRIORITY;
139 #endif
140
141 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
142
143 #if BOOST_WINAPI_PARTITION_DESKTOP
144
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;
155
156 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7
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;
160 #endif
161
162 #endif // BOOST_WINAPI_PARTITION_DESKTOP
163
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;
177
178 #else // defined( BOOST_USE_WINDOWS_H )
179
180 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
181
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;
195
196 // Undocumented
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;
200
201 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
202 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PROTECTED_PROCESS_ = 0x40000;
203 BOOST_CONSTEXPR_OR_CONST DWORD_ EXTENDED_STARTUPINFO_PRESENT_ = 0x80000;
204 #endif
205
206 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7
207 BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_PARENT_AFFINITY_ = 0x10000;
208 #endif
209
210 // Only documented for Windows CE
211 #if defined(UNDER_CE)
212 BOOST_CONSTEXPR_OR_CONST DWORD_ INHERIT_CALLER_PRIORITY_ = 0x20000;
213 #endif
214
215 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
216
217 #if BOOST_WINAPI_PARTITION_DESKTOP
218
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;
229
230 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN7
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;
234 #endif
235
236 #endif // BOOST_WINAPI_PARTITION_DESKTOP
237
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 );
257
258 #endif // defined( BOOST_USE_WINDOWS_H )
259
260 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
261
262 #if defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW )
263
264 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PRESERVE_CODE_AUTHZ_LEVEL_ = CREATE_PRESERVE_CODE_AUTHZ_LEVEL;
265
266 // Undocumented
267 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_IGNORE_SYSTEM_DEFAULT_ = CREATE_IGNORE_SYSTEM_DEFAULT;
268
269 #else // defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW )
270
271 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_PRESERVE_CODE_AUTHZ_LEVEL_ = 0x2000000;
272
273 // Undocumented
274 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_IGNORE_SYSTEM_DEFAULT_ = 0x80000000;
275
276 #endif // defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW )
277
278 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
279
280 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
281
282 typedef struct BOOST_MAY_ALIAS _PROCESS_INFORMATION {
283 HANDLE_ hProcess;
284 HANDLE_ hThread;
285 DWORD_ dwProcessId;
286 DWORD_ dwThreadId;
287 } PROCESS_INFORMATION_, *PPROCESS_INFORMATION_, *LPPROCESS_INFORMATION_;
288
289 #if !defined(BOOST_NO_ANSI_APIS)
290 typedef struct BOOST_MAY_ALIAS _STARTUPINFOA {
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_;
310 #endif // !defined(BOOST_NO_ANSI_APIS)
311
312 typedef struct BOOST_MAY_ALIAS _STARTUPINFOW {
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
333 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
334
335 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
336
337 #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
338 typedef struct _PROC_THREAD_ATTRIBUTE_LIST PROC_THREAD_ATTRIBUTE_LIST_, *PPROC_THREAD_ATTRIBUTE_LIST_;
339 #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
340
341 #if BOOST_WINAPI_PARTITION_DESKTOP
342
343 #if !defined(BOOST_NO_ANSI_APIS)
344 typedef struct BOOST_MAY_ALIAS _STARTUPINFOEXA {
345 STARTUPINFOA_ StartupInfo;
346 PPROC_THREAD_ATTRIBUTE_LIST_ lpAttributeList;
347 } STARTUPINFOEXA_, *LPSTARTUPINFOEXA_;
348 #endif // !defined(BOOST_NO_ANSI_APIS)
349
350 typedef struct BOOST_MAY_ALIAS _STARTUPINFOEXW {
351 STARTUPINFOW_ StartupInfo;
352 PPROC_THREAD_ATTRIBUTE_LIST_ lpAttributeList;
353 } STARTUPINFOEXW_, *LPSTARTUPINFOEXW_;
354
355 #endif // BOOST_WINAPI_PARTITION_DESKTOP
356
357 #endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
358
359 #if BOOST_WINAPI_PARTITION_APP_SYSTEM
360
361 using ::TerminateProcess;
362 using ::OpenProcess;
363
364 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
365
366 #if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
367
368 using ::GetExitCodeProcess;
369 using ::ExitProcess;
370
371 #if !defined( BOOST_NO_ANSI_APIS )
CreateProcessA(LPCSTR_ lpApplicationName,LPSTR_ lpCommandLine,LPSECURITY_ATTRIBUTES_ lpProcessAttributes,LPSECURITY_ATTRIBUTES_ lpThreadAttributes,INT_ bInheritHandles,DWORD_ dwCreationFlags,LPVOID_ lpEnvironment,LPCSTR_ lpCurrentDirectory,LPSTARTUPINFOA_ lpStartupInfo,LPPROCESS_INFORMATION_ lpProcessInformation)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
create_process(LPCSTR_ lpApplicationName,LPSTR_ lpCommandLine,LPSECURITY_ATTRIBUTES_ lpProcessAttributes,LPSECURITY_ATTRIBUTES_ lpThreadAttributes,INT_ bInheritHandles,DWORD_ dwCreationFlags,LPVOID_ lpEnvironment,LPCSTR_ lpCurrentDirectory,LPSTARTUPINFOA_ lpStartupInfo,LPPROCESS_INFORMATION_ lpProcessInformation)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
CreateProcessW(LPCWSTR_ lpApplicationName,LPWSTR_ lpCommandLine,LPSECURITY_ATTRIBUTES_ lpProcessAttributes,LPSECURITY_ATTRIBUTES_ lpThreadAttributes,INT_ bInheritHandles,DWORD_ dwCreationFlags,LPVOID_ lpEnvironment,LPCWSTR_ lpCurrentDirectory,LPSTARTUPINFOW_ lpStartupInfo,LPPROCESS_INFORMATION_ lpProcessInformation)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
create_process(LPCWSTR_ lpApplicationName,LPWSTR_ lpCommandLine,LPSECURITY_ATTRIBUTES_ lpProcessAttributes,LPSECURITY_ATTRIBUTES_ lpThreadAttributes,INT_ bInheritHandles,DWORD_ dwCreationFlags,LPVOID_ lpEnvironment,LPCWSTR_ lpCurrentDirectory,LPSTARTUPINFOW_ lpStartupInfo,LPPROCESS_INFORMATION_ lpProcessInformation)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
473 #endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
474
475 }
476 }
477
478 #endif // BOOST_WINAPI_PROCESS_HPP_INCLUDED_
479