github.com/searKing/golang/go@v1.2.117/runtime/cgosymbolizer/include/boost/winapi/file_management.hpp (about) 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 */ 10 11 #ifndef BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_ 12 #define BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_ 13 14 #include <boost/winapi/basic_types.hpp> 15 #include <boost/winapi/limits.hpp> 16 #include <boost/winapi/time.hpp> 17 #include <boost/winapi/overlapped.hpp> 18 #include <boost/winapi/detail/header.hpp> 19 20 #ifdef BOOST_HAS_PRAGMA_ONCE 21 #pragma once 22 #endif 23 24 /* 25 * UWP: 26 * API SDK 8 SDK 10 _WIN32_WINNT 27 * AreFileApisANSI DESKTOP - DESKTOP | SYSTEM 28 * CreateFile DESKTOP - DESKTOP | SYSTEM 29 * DeleteFile APP - APP | SYSTEM 30 * FindClose APP - APP | SYSTEM 31 * FindFirstFile DESKTOP > APP | SYSTEM 32 * FindNextFile DESKTOP > APP | SYSTEM 33 * GetFileAttributes DESKTOP > APP | SYSTEM 34 * GetFileInformationByHandle DESKTOP - DESKTOP | SYSTEM 35 * GetFileSizeEx DESKTOP > APP | SYSTEM 36 * LockFile DESKTOP - DESKTOP | SYSTEM 37 * MoveFileEx APP - APP | SYSTEM 38 * ReadFile APP - APP | SYSTEM 39 * SetEndOfFile APP - APP | SYSTEM 40 * SetFilePointer DESKTOP > APP | SYSTEM 41 * SetFileValidData DESKTOP - DESKTOP | SYSTEM >= 0x0501 42 * UnlockFile DESKTOP - DESKTOP | SYSTEM 43 * WriteFile APP - APP | SYSTEM 44 */ 45 46 #if !defined( BOOST_USE_WINDOWS_H ) 47 extern "C" { 48 49 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM 50 #if !defined( BOOST_NO_ANSI_APIS ) 51 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 52 AreFileApisANSI(BOOST_WINAPI_DETAIL_VOID); 53 54 BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC 55 CreateFileA( 56 boost::winapi::LPCSTR_ lpFileName, 57 boost::winapi::DWORD_ dwDesiredAccess, 58 boost::winapi::DWORD_ dwShareMode, 59 ::_SECURITY_ATTRIBUTES* lpSecurityAttributes, 60 boost::winapi::DWORD_ dwCreationDisposition, 61 boost::winapi::DWORD_ dwFlagsAndAttributes, 62 boost::winapi::HANDLE_ hTemplateFile); 63 64 struct _WIN32_FIND_DATAA; 65 BOOST_WINAPI_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC 66 FindFirstFileA(boost::winapi::LPCSTR_ lpFileName, ::_WIN32_FIND_DATAA* lpFindFileData); 67 68 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 69 FindNextFileA(boost::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAA* lpFindFileData); 70 #endif 71 72 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC 73 CreateFileW( 74 boost::winapi::LPCWSTR_ lpFileName, 75 boost::winapi::DWORD_ dwDesiredAccess, 76 boost::winapi::DWORD_ dwShareMode, 77 ::_SECURITY_ATTRIBUTES* lpSecurityAttributes, 78 boost::winapi::DWORD_ dwCreationDisposition, 79 boost::winapi::DWORD_ dwFlagsAndAttributes, 80 boost::winapi::HANDLE_ hTemplateFile); 81 82 struct _WIN32_FIND_DATAW; 83 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC 84 FindFirstFileW(boost::winapi::LPCWSTR_ lpFileName, ::_WIN32_FIND_DATAW* lpFindFileData); 85 86 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 87 FindNextFileW(boost::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAW* lpFindFileData); 88 89 struct _BY_HANDLE_FILE_INFORMATION; 90 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 91 GetFileInformationByHandle( 92 boost::winapi::HANDLE_ hFile, 93 ::_BY_HANDLE_FILE_INFORMATION* lpFileInformation); 94 95 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 96 LockFile( 97 boost::winapi::HANDLE_ hFile, 98 boost::winapi::DWORD_ dwFileOffsetLow, 99 boost::winapi::DWORD_ dwFileOffsetHigh, 100 boost::winapi::DWORD_ nNumberOfBytesToLockLow, 101 boost::winapi::DWORD_ nNumberOfBytesToLockHigh); 102 103 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 104 LockFileEx( 105 boost::winapi::HANDLE_ hFile, 106 boost::winapi::DWORD_ dwFlags, 107 boost::winapi::DWORD_ dwReserved, 108 boost::winapi::DWORD_ nNumberOfBytesToLockLow, 109 boost::winapi::DWORD_ nNumberOfBytesToLockHigh, 110 ::_OVERLAPPED* lpOverlapped); 111 112 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP 113 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 114 SetFileValidData( 115 boost::winapi::HANDLE_ hFile, 116 boost::winapi::LONGLONG_ ValidDataLength); 117 #endif 118 119 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 120 UnlockFile( 121 boost::winapi::HANDLE_ hFile, 122 boost::winapi::DWORD_ dwFileOffsetLow, 123 boost::winapi::DWORD_ dwFileOffsetHigh, 124 boost::winapi::DWORD_ nNumberOfBytesToUnlockLow, 125 boost::winapi::DWORD_ nNumberOfBytesToUnlockHigh); 126 127 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 128 UnlockFileEx( 129 boost::winapi::HANDLE_ hFile, 130 boost::winapi::DWORD_ dwReserved, 131 boost::winapi::DWORD_ nNumberOfBytesToUnlockLow, 132 boost::winapi::DWORD_ nNumberOfBytesToUnlockHigh, 133 ::_OVERLAPPED* lpOverlapped); 134 #endif 135 136 #if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM 137 #if !defined( BOOST_NO_ANSI_APIS ) 138 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 139 DeleteFileA(boost::winapi::LPCSTR_ lpFileName); 140 141 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 142 MoveFileExA( 143 boost::winapi::LPCSTR_ lpExistingFileName, 144 boost::winapi::LPCSTR_ lpNewFileName, 145 boost::winapi::DWORD_ dwFlags); 146 #endif 147 148 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 149 DeleteFileW(boost::winapi::LPCWSTR_ lpFileName); 150 151 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 152 FindClose(boost::winapi::HANDLE_ hFindFile); 153 154 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 155 MoveFileExW( 156 boost::winapi::LPCWSTR_ lpExistingFileName, 157 boost::winapi::LPCWSTR_ lpNewFileName, 158 boost::winapi::DWORD_ dwFlags); 159 160 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 161 ReadFile( 162 boost::winapi::HANDLE_ hFile, 163 boost::winapi::LPVOID_ lpBuffer, 164 boost::winapi::DWORD_ nNumberOfBytesToRead, 165 boost::winapi::LPDWORD_ lpNumberOfBytesRead, 166 ::_OVERLAPPED* lpOverlapped); 167 168 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 169 SetEndOfFile(boost::winapi::HANDLE_ hFile); 170 171 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 172 WriteFile( 173 boost::winapi::HANDLE_ hFile, 174 boost::winapi::LPCVOID_ lpBuffer, 175 boost::winapi::DWORD_ nNumberOfBytesToWrite, 176 boost::winapi::LPDWORD_ lpNumberOfBytesWritten, 177 ::_OVERLAPPED* lpOverlapped); 178 #endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM 179 180 #if BOOST_WINAPI_PARTITION_APP_SYSTEM 181 #if !defined( BOOST_NO_ANSI_APIS ) 182 BOOST_WINAPI_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC 183 GetFileAttributesA(boost::winapi::LPCSTR_ lpFileName); 184 #endif 185 186 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC 187 GetFileAttributesW(boost::winapi::LPCWSTR_ lpFileName); 188 189 BOOST_WINAPI_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC 190 GetFileSizeEx(boost::winapi::HANDLE_ hFile, ::_LARGE_INTEGER* lpFileSize); 191 192 BOOST_WINAPI_IMPORT_EXCEPT_WM boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC 193 SetFilePointer( 194 boost::winapi::HANDLE_ hFile, 195 boost::winapi::LONG_ lpDistanceToMove, 196 boost::winapi::PLONG_ lpDistanceToMoveHigh, 197 boost::winapi::DWORD_ dwMoveMethod); 198 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM 199 200 } // extern "C" 201 #endif // !defined(BOOST_USE_WINDOWS_H) 202 203 namespace boost { 204 namespace winapi { 205 206 #if defined( BOOST_USE_WINDOWS_H ) 207 208 BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_SIZE_ = INVALID_FILE_SIZE; 209 BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_SET_FILE_POINTER_ = INVALID_SET_FILE_POINTER; 210 BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_ATTRIBUTES_ = INVALID_FILE_ATTRIBUTES; 211 212 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_READONLY_ = FILE_ATTRIBUTE_READONLY; 213 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_HIDDEN_ = FILE_ATTRIBUTE_HIDDEN; 214 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SYSTEM_ = FILE_ATTRIBUTE_SYSTEM; 215 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = FILE_ATTRIBUTE_DIRECTORY; 216 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = FILE_ATTRIBUTE_ARCHIVE; 217 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DEVICE_ = FILE_ATTRIBUTE_DEVICE; 218 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NORMAL_ = FILE_ATTRIBUTE_NORMAL; 219 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = FILE_ATTRIBUTE_TEMPORARY; 220 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = FILE_ATTRIBUTE_SPARSE_FILE; 221 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = FILE_ATTRIBUTE_REPARSE_POINT; 222 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = FILE_ATTRIBUTE_COMPRESSED; 223 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_OFFLINE_ = FILE_ATTRIBUTE_OFFLINE; 224 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED; 225 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = FILE_ATTRIBUTE_ENCRYPTED; 226 227 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_ = CREATE_NEW; 228 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_ALWAYS_ = CREATE_ALWAYS; 229 BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_EXISTING_ = OPEN_EXISTING; 230 BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_ALWAYS_ = OPEN_ALWAYS; 231 BOOST_CONSTEXPR_OR_CONST DWORD_ TRUNCATE_EXISTING_ = TRUNCATE_EXISTING; 232 233 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_READ_ = FILE_SHARE_READ; 234 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_WRITE_ = FILE_SHARE_WRITE; 235 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_DELETE_ = FILE_SHARE_DELETE; 236 237 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_BEGIN_ = FILE_BEGIN; 238 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_CURRENT_ = FILE_CURRENT; 239 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_END_ = FILE_END; 240 241 #else // defined( BOOST_USE_WINDOWS_H ) 242 243 BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_SIZE_ = ((DWORD_)0xFFFFFFFF); 244 BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_SET_FILE_POINTER_ = ((DWORD_)-1); 245 BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_ATTRIBUTES_ = ((DWORD_)-1); 246 247 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_READONLY_ = 0x00000001; 248 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_HIDDEN_ = 0x00000002; 249 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SYSTEM_ = 0x00000004; 250 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = 0x00000010; 251 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = 0x00000020; 252 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DEVICE_ = 0x00000040; 253 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NORMAL_ = 0x00000080; 254 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = 0x00000100; 255 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = 0x00000200; 256 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = 0x00000400; 257 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = 0x00000800; 258 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_OFFLINE_ = 0x00001000; 259 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = 0x00002000; 260 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = 0x00004000; 261 262 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_ = 1; 263 BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_ALWAYS_ = 2; 264 BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_EXISTING_ = 3; 265 BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_ALWAYS_ = 4; 266 BOOST_CONSTEXPR_OR_CONST DWORD_ TRUNCATE_EXISTING_ = 5; 267 268 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_READ_ = 0x00000001; 269 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_WRITE_ = 0x00000002; 270 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_DELETE_ = 0x00000004; 271 272 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_BEGIN_ = 0; 273 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_CURRENT_ = 1; 274 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_END_ = 2; 275 276 #endif // defined( BOOST_USE_WINDOWS_H ) 277 278 // Some of these constants are not defined by Windows SDK in MinGW or older MSVC 279 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_WRITE_THROUGH_ = 0x80000000; 280 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OVERLAPPED_ = 0x40000000; 281 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_NO_BUFFERING_ = 0x20000000; 282 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_RANDOM_ACCESS_ = 0x10000000; 283 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_SEQUENTIAL_SCAN_ = 0x08000000; 284 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_DELETE_ON_CLOSE_ = 0x04000000; 285 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_BACKUP_SEMANTICS_ = 0x02000000; 286 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_POSIX_SEMANTICS_ = 0x01000000; 287 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_SESSION_AWARE_ = 0x00800000; 288 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_REPARSE_POINT_ = 0x00200000; 289 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_NO_RECALL_ = 0x00100000; 290 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_FIRST_PIPE_INSTANCE_ = 0x00080000; 291 292 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8 293 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_REQUIRING_OPLOCK_ = 0x00040000; 294 #endif 295 296 // This constant is not defined in Windows SDK up until 6.0A 297 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_VIRTUAL_ = 0x00010000; 298 299 // These constants are not defined in Windows SDK up until 8.0 and MinGW/MinGW-w64 (as of 2016-02-14). 300 // They are documented to be supported only since Windows 8/Windows Server 2012 301 // but defined unconditionally. 302 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_INTEGRITY_STREAM_ = 0x00008000; 303 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NO_SCRUB_DATA_ = 0x00020000; 304 // Undocumented 305 BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_EA_ = 0x00040000; 306 307 #if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM 308 #if !defined( BOOST_NO_ANSI_APIS ) 309 using ::AreFileApisANSI; 310 311 BOOST_FORCEINLINE HANDLE_ CreateFileA( 312 LPCSTR_ lpFileName, 313 DWORD_ dwDesiredAccess, 314 DWORD_ dwShareMode, 315 SECURITY_ATTRIBUTES_* lpSecurityAttributes, 316 DWORD_ dwCreationDisposition, 317 DWORD_ dwFlagsAndAttributes, 318 HANDLE_ hTemplateFile) 319 { 320 return ::CreateFileA( 321 lpFileName, 322 dwDesiredAccess, 323 dwShareMode, 324 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), 325 dwCreationDisposition, 326 dwFlagsAndAttributes, 327 hTemplateFile); 328 } 329 330 BOOST_FORCEINLINE HANDLE_ create_file( 331 LPCSTR_ lpFileName, 332 DWORD_ dwDesiredAccess, 333 DWORD_ dwShareMode, 334 SECURITY_ATTRIBUTES_* lpSecurityAttributes, 335 DWORD_ dwCreationDisposition, 336 DWORD_ dwFlagsAndAttributes, 337 HANDLE_ hTemplateFile) 338 { 339 return ::CreateFileA( 340 lpFileName, 341 dwDesiredAccess, 342 dwShareMode, 343 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), 344 dwCreationDisposition, 345 dwFlagsAndAttributes, 346 hTemplateFile); 347 } 348 349 typedef struct BOOST_MAY_ALIAS _WIN32_FIND_DATAA { 350 DWORD_ dwFileAttributes; 351 FILETIME_ ftCreationTime; 352 FILETIME_ ftLastAccessTime; 353 FILETIME_ ftLastWriteTime; 354 DWORD_ nFileSizeHigh; 355 DWORD_ nFileSizeLow; 356 DWORD_ dwReserved0; 357 DWORD_ dwReserved1; 358 CHAR_ cFileName[MAX_PATH_]; 359 CHAR_ cAlternateFileName[14]; 360 #ifdef _MAC 361 DWORD_ dwFileType; 362 DWORD_ dwCreatorType; 363 WORD_ wFinderFlags; 364 #endif 365 } WIN32_FIND_DATAA_, *PWIN32_FIND_DATAA_, *LPWIN32_FIND_DATAA_; 366 367 BOOST_FORCEINLINE HANDLE_ FindFirstFileA(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData) 368 { 369 return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); 370 } 371 372 BOOST_FORCEINLINE HANDLE_ find_first_file(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData) 373 { 374 return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); 375 } 376 377 BOOST_FORCEINLINE BOOL_ FindNextFileA(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData) 378 { 379 return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); 380 } 381 382 BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData) 383 { 384 return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData)); 385 } 386 387 #endif // !defined( BOOST_NO_ANSI_APIS ) 388 389 BOOST_FORCEINLINE HANDLE_ CreateFileW( 390 LPCWSTR_ lpFileName, 391 DWORD_ dwDesiredAccess, 392 DWORD_ dwShareMode, 393 SECURITY_ATTRIBUTES_* lpSecurityAttributes, 394 DWORD_ dwCreationDisposition, 395 DWORD_ dwFlagsAndAttributes, 396 HANDLE_ hTemplateFile) 397 { 398 return ::CreateFileW( 399 lpFileName, 400 dwDesiredAccess, 401 dwShareMode, 402 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), 403 dwCreationDisposition, 404 dwFlagsAndAttributes, 405 hTemplateFile); 406 } 407 408 BOOST_FORCEINLINE HANDLE_ create_file( 409 LPCWSTR_ lpFileName, 410 DWORD_ dwDesiredAccess, 411 DWORD_ dwShareMode, 412 SECURITY_ATTRIBUTES_* lpSecurityAttributes, 413 DWORD_ dwCreationDisposition, 414 DWORD_ dwFlagsAndAttributes, 415 HANDLE_ hTemplateFile) 416 { 417 return ::CreateFileW( 418 lpFileName, 419 dwDesiredAccess, 420 dwShareMode, 421 reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes), 422 dwCreationDisposition, 423 dwFlagsAndAttributes, 424 hTemplateFile); 425 } 426 427 typedef struct BOOST_MAY_ALIAS _WIN32_FIND_DATAW { 428 DWORD_ dwFileAttributes; 429 FILETIME_ ftCreationTime; 430 FILETIME_ ftLastAccessTime; 431 FILETIME_ ftLastWriteTime; 432 DWORD_ nFileSizeHigh; 433 DWORD_ nFileSizeLow; 434 DWORD_ dwReserved0; 435 DWORD_ dwReserved1; 436 WCHAR_ cFileName[MAX_PATH_]; 437 WCHAR_ cAlternateFileName[14]; 438 #ifdef _MAC 439 DWORD_ dwFileType; 440 DWORD_ dwCreatorType; 441 WORD_ wFinderFlags; 442 #endif 443 } WIN32_FIND_DATAW_, *PWIN32_FIND_DATAW_, *LPWIN32_FIND_DATAW_; 444 445 typedef struct BOOST_MAY_ALIAS _BY_HANDLE_FILE_INFORMATION { 446 DWORD_ dwFileAttributes; 447 FILETIME_ ftCreationTime; 448 FILETIME_ ftLastAccessTime; 449 FILETIME_ ftLastWriteTime; 450 DWORD_ dwVolumeSerialNumber; 451 DWORD_ nFileSizeHigh; 452 DWORD_ nFileSizeLow; 453 DWORD_ nNumberOfLinks; 454 DWORD_ nFileIndexHigh; 455 DWORD_ nFileIndexLow; 456 } BY_HANDLE_FILE_INFORMATION_, *PBY_HANDLE_FILE_INFORMATION_, *LPBY_HANDLE_FILE_INFORMATION_; 457 458 BOOST_FORCEINLINE HANDLE_ FindFirstFileW(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData) 459 { 460 return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); 461 } 462 463 BOOST_FORCEINLINE HANDLE_ find_first_file(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData) 464 { 465 return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); 466 } 467 468 BOOST_FORCEINLINE BOOL_ FindNextFileW(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData) 469 { 470 return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); 471 } 472 473 BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData) 474 { 475 return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData)); 476 } 477 478 BOOST_FORCEINLINE BOOL_ GetFileInformationByHandle(HANDLE_ h, BY_HANDLE_FILE_INFORMATION_* info) 479 { 480 return ::GetFileInformationByHandle(h, reinterpret_cast< ::_BY_HANDLE_FILE_INFORMATION* >(info)); 481 } 482 483 using ::LockFile; 484 485 BOOST_FORCEINLINE BOOL_ LockFileEx( 486 HANDLE_ hFile, 487 DWORD_ dwFlags, 488 DWORD_ dwReserved, 489 DWORD_ nNumberOfBytesToLockLow, 490 DWORD_ nNumberOfBytesToLockHigh, 491 OVERLAPPED_* lpOverlapped) 492 { 493 return ::LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); 494 } 495 496 #if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP 497 using ::SetFileValidData; 498 #endif 499 500 using ::UnlockFile; 501 502 BOOST_FORCEINLINE BOOL_ UnlockFileEx( 503 HANDLE_ hFile, 504 DWORD_ dwReserved, 505 DWORD_ nNumberOfBytesToUnlockLow, 506 DWORD_ nNumberOfBytesToUnlockHigh, 507 OVERLAPPED_* lpOverlapped) 508 { 509 return ::UnlockFileEx(hFile, dwReserved, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); 510 } 511 #endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM 512 513 #if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM 514 #if !defined( BOOST_NO_ANSI_APIS ) 515 using ::DeleteFileA; 516 517 BOOST_FORCEINLINE BOOL_ delete_file(LPCSTR_ lpFileName) 518 { 519 return ::DeleteFileA(lpFileName); 520 } 521 522 using ::MoveFileExA; 523 524 BOOST_FORCEINLINE BOOL_ move_file(LPCSTR_ lpExistingFileName, LPCSTR_ lpNewFileName, DWORD_ dwFlags) 525 { 526 return ::MoveFileExA(lpExistingFileName, lpNewFileName, dwFlags); 527 } 528 529 #endif 530 using ::DeleteFileW; 531 532 BOOST_FORCEINLINE BOOL_ delete_file(LPCWSTR_ lpFileName) 533 { 534 return ::DeleteFileW(lpFileName); 535 } 536 537 using ::FindClose; 538 using ::MoveFileExW; 539 540 BOOST_FORCEINLINE BOOL_ move_file(LPCWSTR_ lpExistingFileName, LPCWSTR_ lpNewFileName, DWORD_ dwFlags) 541 { 542 return ::MoveFileExW(lpExistingFileName, lpNewFileName, dwFlags); 543 } 544 545 BOOST_FORCEINLINE BOOL_ ReadFile( 546 HANDLE_ hFile, 547 LPVOID_ lpBuffer, 548 DWORD_ nNumberOfBytesToWrite, 549 LPDWORD_ lpNumberOfBytesWritten, 550 OVERLAPPED_* lpOverlapped) 551 { 552 return ::ReadFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); 553 } 554 555 using ::SetEndOfFile; 556 557 BOOST_FORCEINLINE BOOL_ WriteFile( 558 HANDLE_ hFile, 559 LPCVOID_ lpBuffer, 560 DWORD_ nNumberOfBytesToWrite, 561 LPDWORD_ lpNumberOfBytesWritten, 562 OVERLAPPED_* lpOverlapped) 563 { 564 return ::WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped)); 565 } 566 #endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM 567 568 #if BOOST_WINAPI_PARTITION_APP_SYSTEM 569 #if !defined( BOOST_NO_ANSI_APIS ) 570 using ::GetFileAttributesA; 571 572 BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCSTR_ lpFileName) 573 { 574 return ::GetFileAttributesA(lpFileName); 575 } 576 #endif 577 using ::GetFileAttributesW; 578 579 BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCWSTR_ lpFileName) 580 { 581 return ::GetFileAttributesW(lpFileName); 582 } 583 584 BOOST_FORCEINLINE BOOL_ GetFileSizeEx(HANDLE_ hFile, LARGE_INTEGER_* lpFileSize) 585 { 586 return ::GetFileSizeEx(hFile, reinterpret_cast< ::_LARGE_INTEGER* >(lpFileSize)); 587 } 588 589 using ::SetFilePointer; 590 #endif // BOOST_WINAPI_PARTITION_APP_SYSTEM 591 592 } 593 } 594 595 #include <boost/winapi/detail/footer.hpp> 596 597 #endif // BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_