]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/winapi/jobs.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / winapi / jobs.hpp
CommitLineData
b32b8144
FG
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>
20effc67 21#include <boost/winapi/detail/header.hpp>
b32b8144
FG
22
23#if !defined( BOOST_USE_WINDOWS_H )
24extern "C" {
25#if !defined( BOOST_NO_ANSI_APIS )
26#if BOOST_WINAPI_PARTITION_DESKTOP
20effc67 27BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC CreateJobObjectA(
b32b8144
FG
28 ::_SECURITY_ATTRIBUTES* lpJobAttributes,
29 boost::winapi::LPCSTR_ lpName);
30#endif
31#endif
32
33#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
20effc67 34BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC CreateJobObjectW(
b32b8144
FG
35 ::_SECURITY_ATTRIBUTES* lpJobAttributes,
36 boost::winapi::LPCWSTR_ lpName);
37
20effc67 38BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC AssignProcessToJobObject(
b32b8144
FG
39 boost::winapi::HANDLE_ hJob,
40 boost::winapi::HANDLE_ hProcess);
41
42#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
20effc67 43BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC IsProcessInJob(
b32b8144
FG
44 boost::winapi::HANDLE_ ProcessHandle,
45 boost::winapi::HANDLE_ JobHandle,
46 boost::winapi::PBOOL_ Result);
47#endif
48
20effc67 49BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC TerminateJobObject(
b32b8144
FG
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 )
58extern "C" {
59#if !defined( BOOST_NO_ANSI_APIS )
60#if BOOST_WINAPI_PARTITION_DESKTOP
20effc67 61BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenJobObjectA(
b32b8144
FG
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
20effc67 69BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC OpenJobObjectW(
b32b8144
FG
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
77namespace boost {
78namespace winapi {
79
80// MinGW does not define job constants
81#if defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW )
92f5a8d4
TL
82BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ASSIGN_PROCESS_ = JOB_OBJECT_ASSIGN_PROCESS;
83BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_ATTRIBUTES_ = JOB_OBJECT_SET_ATTRIBUTES;
84BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_QUERY_ = JOB_OBJECT_QUERY;
85BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_TERMINATE_ = JOB_OBJECT_TERMINATE;
86BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_SECURITY_ATTRIBUTES_ = JOB_OBJECT_SET_SECURITY_ATTRIBUTES;
87BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ALL_ACCESS_ = JOB_OBJECT_ALL_ACCESS;
b32b8144 88#else
92f5a8d4
TL
89BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ASSIGN_PROCESS_ = 0x0001;
90BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_ATTRIBUTES_ = 0x0002;
91BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_QUERY_ = 0x0004;
92BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_TERMINATE_ = 0x0008;
93BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_SET_SECURITY_ATTRIBUTES_ = 0x0010;
94BOOST_CONSTEXPR_OR_CONST DWORD_ JOB_OBJECT_ALL_ACCESS_ = (STANDARD_RIGHTS_REQUIRED_ | SYNCHRONIZE_ | 0x1F);
b32b8144
FG
95#endif
96
97#if BOOST_WINAPI_PARTITION_DESKTOP
98#if !defined( BOOST_NO_ANSI_APIS )
99BOOST_FORCEINLINE HANDLE_ CreateJobObjectA(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCSTR_ lpName)
100{
101 return ::CreateJobObjectA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
102}
103
104BOOST_FORCEINLINE HANDLE_ create_job_object(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCSTR_ lpName)
105{
106 return ::CreateJobObjectA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
107}
108
109using ::OpenJobObjectA;
110
111BOOST_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
119using ::AssignProcessToJobObject;
120BOOST_FORCEINLINE HANDLE_ CreateJobObjectW(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCWSTR_ lpName)
121{
122 return ::CreateJobObjectW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
123}
124
125BOOST_FORCEINLINE HANDLE_ create_job_object(LPSECURITY_ATTRIBUTES_ lpJobAttributes, LPCWSTR_ lpName)
126{
127 return ::CreateJobObjectW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpJobAttributes), lpName);
128}
129
130BOOST_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
136using ::IsProcessInJob;
137#endif
138
139using ::OpenJobObjectW;
140using ::TerminateJobObject;
141#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
142
143} // namespace winapi
144} // namespace boost
145
20effc67
TL
146#include <boost/winapi/detail/footer.hpp>
147
b32b8144
FG
148#endif // BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN2K
149#endif // BOOST_WINAPI_JOBS_HPP_INCLUDED_