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