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