]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/winapi/include/boost/detail/winapi/file_mapping.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / winapi / include / boost / detail / winapi / file_mapping.hpp
CommitLineData
7c673cae
FG
1// file_mapping.hpp --------------------------------------------------------------//
2
3// Copyright 2010 Vicente J. Botet Escriba
4// Copyright 2015 Andrey Semashev
5// Copyright 2016 Jorge Lodos
6
7// Distributed under the Boost Software License, Version 1.0.
8// See http://www.boost.org/LICENSE_1_0.txt
9
10
11#ifndef BOOST_DETAIL_WINAPI_FILE_MAPPING_HPP
12#define BOOST_DETAIL_WINAPI_FILE_MAPPING_HPP
13
14#include <boost/detail/winapi/basic_types.hpp>
15
16#ifdef BOOST_HAS_PRAGMA_ONCE
17#pragma once
18#endif
19
20#if !defined( BOOST_USE_WINDOWS_H )
21extern "C" {
22#if !defined( BOOST_NO_ANSI_APIS )
23BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
24CreateFileMappingA(
25 boost::detail::winapi::HANDLE_ hFile,
26 ::_SECURITY_ATTRIBUTES* lpFileMappingAttributes,
27 boost::detail::winapi::DWORD_ flProtect,
28 boost::detail::winapi::DWORD_ dwMaximumSizeHigh,
29 boost::detail::winapi::DWORD_ dwMaximumSizeLow,
30 boost::detail::winapi::LPCSTR_ lpName);
31
32BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
33OpenFileMappingA(
34 boost::detail::winapi::DWORD_ dwDesiredAccess,
35 boost::detail::winapi::BOOL_ bInheritHandle,
36 boost::detail::winapi::LPCSTR_ lpName);
37#endif
38
39BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
40CreateFileMappingW(
41 boost::detail::winapi::HANDLE_ hFile,
42 ::_SECURITY_ATTRIBUTES* lpFileMappingAttributes,
43 boost::detail::winapi::DWORD_ flProtect,
44 boost::detail::winapi::DWORD_ dwMaximumSizeHigh,
45 boost::detail::winapi::DWORD_ dwMaximumSizeLow,
46 boost::detail::winapi::LPCWSTR_ lpName);
47
48BOOST_SYMBOL_IMPORT boost::detail::winapi::HANDLE_ WINAPI
49OpenFileMappingW(
50 boost::detail::winapi::DWORD_ dwDesiredAccess,
51 boost::detail::winapi::BOOL_ bInheritHandle,
52 boost::detail::winapi::LPCWSTR_ lpName);
53
54BOOST_SYMBOL_IMPORT boost::detail::winapi::LPVOID_ WINAPI
55MapViewOfFile(
56 boost::detail::winapi::HANDLE_ hFileMappingObject,
57 boost::detail::winapi::DWORD_ dwDesiredAccess,
58 boost::detail::winapi::DWORD_ dwFileOffsetHigh,
59 boost::detail::winapi::DWORD_ dwFileOffsetLow,
60 boost::detail::winapi::SIZE_T_ dwNumberOfBytesToMap);
61
62BOOST_SYMBOL_IMPORT boost::detail::winapi::LPVOID_ WINAPI
63MapViewOfFileEx(
64 boost::detail::winapi::HANDLE_ hFileMappingObject,
65 boost::detail::winapi::DWORD_ dwDesiredAccess,
66 boost::detail::winapi::DWORD_ dwFileOffsetHigh,
67 boost::detail::winapi::DWORD_ dwFileOffsetLow,
68 boost::detail::winapi::SIZE_T_ dwNumberOfBytesToMap,
69 boost::detail::winapi::LPVOID_ lpBaseAddress);
70
71BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
72FlushViewOfFile(
73 boost::detail::winapi::LPCVOID_ lpBaseAddress,
74 boost::detail::winapi::SIZE_T_ dwNumberOfBytesToFlush);
75
76BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
77UnmapViewOfFile(boost::detail::winapi::LPCVOID_ lpBaseAddress);
78}
79#endif
80
81namespace boost {
82namespace detail {
83namespace winapi {
84
85#if defined( BOOST_USE_WINDOWS_H )
86
87const DWORD_ SEC_FILE_ = SEC_FILE;
88const DWORD_ SEC_IMAGE_ = SEC_IMAGE;
89const DWORD_ SEC_RESERVE_ = SEC_RESERVE;
90const DWORD_ SEC_COMMIT_ = SEC_COMMIT;
91const DWORD_ SEC_NOCACHE_ = SEC_NOCACHE;
92
93// These permission flags are undocumented and some of them are equivalent to the FILE_MAP_* flags.
94// SECTION_QUERY enables NtQuerySection.
95// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FSection%2FNtQuerySection.html
96const DWORD_ SECTION_QUERY_ = SECTION_QUERY;
97const DWORD_ SECTION_MAP_WRITE_ = SECTION_MAP_WRITE;
98const DWORD_ SECTION_MAP_READ_ = SECTION_MAP_READ;
99const DWORD_ SECTION_MAP_EXECUTE_ = SECTION_MAP_EXECUTE;
100const DWORD_ SECTION_EXTEND_SIZE_ = SECTION_EXTEND_SIZE;
101const DWORD_ SECTION_ALL_ACCESS_ = SECTION_ALL_ACCESS;
102
103const DWORD_ FILE_MAP_COPY_ = FILE_MAP_COPY;
104const DWORD_ FILE_MAP_WRITE_ = FILE_MAP_WRITE;
105const DWORD_ FILE_MAP_READ_ = FILE_MAP_READ;
106const DWORD_ FILE_MAP_ALL_ACCESS_ = FILE_MAP_ALL_ACCESS;
107
108#else // defined( BOOST_USE_WINDOWS_H )
109
110const DWORD_ SEC_FILE_ = 0x800000;
111const DWORD_ SEC_IMAGE_ = 0x1000000;
112const DWORD_ SEC_RESERVE_ = 0x4000000;
113const DWORD_ SEC_COMMIT_ = 0x8000000;
114const DWORD_ SEC_NOCACHE_ = 0x10000000;
115
116// These permission flags are undocumented and some of them are equivalent to the FILE_MAP_* flags.
117// SECTION_QUERY enables NtQuerySection.
118// http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%20Functions%2FNT%20Objects%2FSection%2FNtQuerySection.html
119const DWORD_ SECTION_QUERY_ = 0x00000001;
120const DWORD_ SECTION_MAP_WRITE_ = 0x00000002;
121const DWORD_ SECTION_MAP_READ_ = 0x00000004;
122const DWORD_ SECTION_MAP_EXECUTE_ = 0x00000008;
123const DWORD_ SECTION_EXTEND_SIZE_ = 0x00000010;
124const DWORD_ SECTION_ALL_ACCESS_ = 0x000F001F; // STANDARD_RIGHTS_REQUIRED | SECTION_*
125
126const DWORD_ FILE_MAP_COPY_ = SECTION_QUERY_;
127const DWORD_ FILE_MAP_WRITE_ = SECTION_MAP_WRITE_;
128const DWORD_ FILE_MAP_READ_ = SECTION_MAP_READ_;
129const DWORD_ FILE_MAP_ALL_ACCESS_ = SECTION_ALL_ACCESS_;
130
131#endif // defined( BOOST_USE_WINDOWS_H )
132
133// These constants are not defined in Windows SDK up until the one shipped with MSVC 8 and MinGW (as of 2016-02-14)
134const DWORD_ SECTION_MAP_EXECUTE_EXPLICIT_ = 0x00000020; // not included in SECTION_ALL_ACCESS
135const DWORD_ FILE_MAP_EXECUTE_ = SECTION_MAP_EXECUTE_EXPLICIT_; // not included in FILE_MAP_ALL_ACCESS
136
137// These constants are not defined in Windows SDK up until 6.0A and MinGW (as of 2016-02-14)
138const DWORD_ SEC_PROTECTED_IMAGE_ = 0x2000000;
139const DWORD_ SEC_WRITECOMBINE_ = 0x40000000;
140const DWORD_ SEC_LARGE_PAGES_ = 0x80000000;
141const DWORD_ SEC_IMAGE_NO_EXECUTE_ = (SEC_IMAGE_ | SEC_NOCACHE_);
142
143#if !defined( BOOST_NO_ANSI_APIS )
144using ::OpenFileMappingA;
145#endif
146using ::OpenFileMappingW;
147using ::MapViewOfFile;
148using ::MapViewOfFileEx;
149using ::FlushViewOfFile;
150using ::UnmapViewOfFile;
151
152#if !defined( BOOST_NO_ANSI_APIS )
153BOOST_FORCEINLINE HANDLE_ CreateFileMappingA(
154 HANDLE_ hFile,
155 SECURITY_ATTRIBUTES_* lpFileMappingAttributes,
156 DWORD_ flProtect,
157 DWORD_ dwMaximumSizeHigh,
158 DWORD_ dwMaximumSizeLow,
159 LPCSTR_ lpName)
160{
161 return ::CreateFileMappingA(
162 hFile,
163 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes),
164 flProtect,
165 dwMaximumSizeHigh,
166 dwMaximumSizeLow,
167 lpName);
168}
169#endif
170
171BOOST_FORCEINLINE HANDLE_ CreateFileMappingW(
172 HANDLE_ hFile,
173 SECURITY_ATTRIBUTES_* lpFileMappingAttributes,
174 DWORD_ flProtect,
175 DWORD_ dwMaximumSizeHigh,
176 DWORD_ dwMaximumSizeLow,
177 LPCWSTR_ lpName)
178{
179 return ::CreateFileMappingW(
180 hFile,
181 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes),
182 flProtect,
183 dwMaximumSizeHigh,
184 dwMaximumSizeLow,
185 lpName);
186}
187
188#if !defined( BOOST_NO_ANSI_APIS )
189BOOST_FORCEINLINE HANDLE_ create_file_mapping(
190 HANDLE_ hFile,
191 SECURITY_ATTRIBUTES_* lpFileMappingAttributes,
192 DWORD_ flProtect,
193 DWORD_ dwMaximumSizeHigh,
194 DWORD_ dwMaximumSizeLow,
195 LPCSTR_ lpName)
196{
197 return ::CreateFileMappingA(
198 hFile,
199 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes),
200 flProtect,
201 dwMaximumSizeHigh,
202 dwMaximumSizeLow,
203 lpName);
204}
205
206BOOST_FORCEINLINE HANDLE_ open_file_mapping(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCSTR_ lpName)
207{
208 return ::OpenFileMappingA(dwDesiredAccess, bInheritHandle, lpName);
209}
210#endif
211
212BOOST_FORCEINLINE HANDLE_ create_file_mapping(
213 HANDLE_ hFile,
214 SECURITY_ATTRIBUTES_* lpFileMappingAttributes,
215 DWORD_ flProtect,
216 DWORD_ dwMaximumSizeHigh,
217 DWORD_ dwMaximumSizeLow,
218 LPCWSTR_ lpName)
219{
220 return ::CreateFileMappingW(
221 hFile,
222 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpFileMappingAttributes),
223 flProtect,
224 dwMaximumSizeHigh,
225 dwMaximumSizeLow,
226 lpName);
227}
228
229BOOST_FORCEINLINE HANDLE_ open_file_mapping(DWORD_ dwDesiredAccess, BOOL_ bInheritHandle, LPCWSTR_ lpName)
230{
231 return ::OpenFileMappingW(dwDesiredAccess, bInheritHandle, lpName);
232}
233
234}
235}
236}
237
238#endif // BOOST_DETAIL_WINAPI_FILE_MAPPING_HPP