]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/winapi/jobs.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / winapi / jobs.hpp
1 /*
2 * Copyright 2016 Klemens D. Morgenstern
3 *
4 * Distributed under the Boost Software License, Version 1.0.
5 * See http://www.boost.org/LICENSE_1_0.txt
6 */
7
8 #ifndef BOOST_WINAPI_JOBS_HPP_INCLUDED_
9 #define BOOST_WINAPI_JOBS_HPP_INCLUDED_
10
11 #include <boost/winapi/config.hpp>
12
13 #ifdef BOOST_HAS_PRAGMA_ONCE
14 #pragma once
15 #endif
16
17 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
18
19 #include <boost/winapi/basic_types.hpp>
20 #include <boost/winapi/access_rights.hpp>
21 #include <boost/winapi/detail/header.hpp>
22
23 #if !defined( BOOST_USE_WINDOWS_H )
24 extern "C" {
25 #if !defined( BOOST_NO_ANSI_APIS )
26 #if BOOST_WINAPI_PARTITION_DESKTOP
27 BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC CreateJobObjectA(
28 ::_SECURITY_ATTRIBUTES* lpJobAttributes,
29 boost::winapi::LPCSTR_ lpName);
30 #endif
31 #endif
32
33 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
34 BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC CreateJobObjectW(
35 ::_SECURITY_ATTRIBUTES* lpJobAttributes,
36 boost::winapi::LPCWSTR_ lpName);
37
38 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC AssignProcessToJobObject(
39 boost::winapi::HANDLE_ hJob,
40 boost::winapi::HANDLE_ hProcess);
41
42 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
43 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC IsProcessInJob(
44 boost::winapi::HANDLE_ ProcessHandle,
45 boost::winapi::HANDLE_ JobHandle,
46 boost::winapi::PBOOL_ Result);
47 #endif
48
49 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC TerminateJobObject(
50 boost::winapi::HANDLE_ hJob,
51 boost::winapi::UINT_ uExitCode);
52 #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
53 } // extern "C"
54 #endif // !defined( BOOST_USE_WINDOWS_H )
55
56 // MinGW does not declare OpenJobObjectA/W in headers but exports them from libraries
57 #if !defined( BOOST_USE_WINDOWS_H ) || defined( BOOST_WINAPI_IS_MINGW )
58 extern "C" {
59 #if !defined( BOOST_NO_ANSI_APIS )
60 #if BOOST_WINAPI_PARTITION_DESKTOP
61 BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenJobObjectA(
62 boost::winapi::DWORD_ dwDesiredAccess,
63 boost::winapi::BOOL_ bInheritHandles,
64 boost::winapi::LPCSTR_ lpName);
65 #endif
66 #endif
67
68 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
69 BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenJobObjectW(
70 boost::winapi::DWORD_ dwDesiredAccess,
71 boost::winapi::BOOL_ bInheritHandles,
72 boost::winapi::LPCWSTR_ lpName);
73 #endif
74 } // extern "C"
75 #endif // !defined( BOOST_USE_WINDOWS_H ) || defined( BOOST_WINAPI_IS_MINGW )
76
77 namespace boost {
78 namespace winapi {
79
80 // MinGW does not define job constants
81 #if defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW )
82 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ASSIGN_PROCESS_ = JOB_OBJECT_ASSIGN_PROCESS;
83 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_ATTRIBUTES_ = JOB_OBJECT_SET_ATTRIBUTES;
84 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_QUERY_ = JOB_OBJECT_QUERY;
85 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_TERMINATE_ = JOB_OBJECT_TERMINATE;
86 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_SECURITY_ATTRIBUTES_ = JOB_OBJECT_SET_SECURITY_ATTRIBUTES;
87 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ALL_ACCESS_ = JOB_OBJECT_ALL_ACCESS;
88 #else
89 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ASSIGN_PROCESS_ = 0x0001;
90 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_ATTRIBUTES_ = 0x0002;
91 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_QUERY_ = 0x0004;
92 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_TERMINATE_ = 0x0008;
93 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_SECURITY_ATTRIBUTES_ = 0x0010;
94 BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ALL_ACCESS_ = (STANDARD_RIGHTS_REQUIRED_ | SYNCHRONIZE_ | 0x1F);
95 #endif
96
97 #if BOOST_WINAPI_PARTITION_DESKTOP
98 #if !defined( BOOST_NO_ANSI_APIS )
99 BOOST_FORCEINLINE HANDLE_ CreateJobObjectA(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCSTR_ lpName)
100 {
101 return ::CreateJobObjectA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
102 }
103
104 BOOST_FORCEINLINE HANDLE_ create_job_object(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCSTR_ lpName)
105 {
106 return ::CreateJobObjectA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
107 }
108
109 using ::OpenJobObjectA;
110
111 BOOST_FORCEINLINE HANDLE_ open_job_object(DWORD_ dwDesiredAccess, BOOL_ bInheritHandles, LPCSTR_ lpName)
112 {
113 return ::OpenJobObjectA(dwDesiredAccess, bInheritHandles, lpName);
114 }
115 #endif // !defined( BOOST_NO_ANSI_APIS )
116 #endif // BOOST_WINAPI_PARTITION_DESKTOP
117
118 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
119 using ::AssignProcessToJobObject;
120 BOOST_FORCEINLINE HANDLE_ CreateJobObjectW(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCWSTR_ lpName)
121 {
122 return ::CreateJobObjectW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
123 }
124
125 BOOST_FORCEINLINE HANDLE_ create_job_object(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCWSTR_ lpName)
126 {
127 return ::CreateJobObjectW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
128 }
129
130 BOOST_FORCEINLINE HANDLE_ open_job_object(DWORD_ dwDesiredAccess, BOOL_ bInheritHandles, LPCWSTR_ lpName)
131 {
132 return ::OpenJobObjectW(dwDesiredAccess, bInheritHandles, lpName);
133 }
134
135 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
136 using ::IsProcessInJob;
137 #endif
138
139 using ::OpenJobObjectW;
140 using ::TerminateJobObject;
141 #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
142
143 } // namespace winapi
144 } // namespace boost
145
146 #include <boost/winapi/detail/footer.hpp>
147
148 #endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
149 #endif // BOOST_WINAPI_JOBS_HPP_INCLUDED_