1 // boost/system/windows_error.hpp ------------------------------------------// 2 3 // Copyright Beman Dawes 2007 4 5 // Distributed under the Boost Software License, Version 1.0. (See accompanying 6 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 7 8 // See library home page at http://www.boost.org/libs/system 9 10 #ifndef BOOST_SYSTEM_WINDOWS_ERROR_HPP 11 #define BOOST_SYSTEM_WINDOWS_ERROR_HPP 12 13 // This header is effectively empty for compiles on operating systems where 14 // it is not applicable. 15 16 #include <boost/system/config.hpp> 17 18 #ifdef BOOST_WINDOWS_API 19 20 #include <boost/system/error_code.hpp> 21 #include <boost/winapi/error_codes.hpp> 22 23 namespace boost 24 { 25 namespace system 26 { 27 28 // Microsoft Windows ---------------------------------------------------// 29 30 // To construct an error_code after a API error: 31 // 32 // error_code( ::GetLastError(), system_category() ) 33 34 namespace windows_error 35 { 36 enum windows_error_code 37 { 38 success = 0, 39 // These names and values are based on Windows winerror.h 40 invalid_function = boost::winapi::ERROR_INVALID_FUNCTION_, 41 file_not_found = boost::winapi::ERROR_FILE_NOT_FOUND_, 42 path_not_found = boost::winapi::ERROR_PATH_NOT_FOUND_, 43 too_many_open_files = boost::winapi::ERROR_TOO_MANY_OPEN_FILES_, 44 access_denied = boost::winapi::ERROR_ACCESS_DENIED_, 45 invalid_handle = boost::winapi::ERROR_INVALID_HANDLE_, 46 arena_trashed = boost::winapi::ERROR_ARENA_TRASHED_, 47 not_enough_memory = boost::winapi::ERROR_NOT_ENOUGH_MEMORY_, 48 invalid_block = boost::winapi::ERROR_INVALID_BLOCK_, 49 bad_environment = boost::winapi::ERROR_BAD_ENVIRONMENT_, 50 bad_format = boost::winapi::ERROR_BAD_FORMAT_, 51 invalid_access = boost::winapi::ERROR_INVALID_ACCESS_, 52 outofmemory = boost::winapi::ERROR_OUTOFMEMORY_, 53 invalid_drive = boost::winapi::ERROR_INVALID_DRIVE_, 54 current_directory = boost::winapi::ERROR_CURRENT_DIRECTORY_, 55 not_same_device = boost::winapi::ERROR_NOT_SAME_DEVICE_, 56 no_more_files = boost::winapi::ERROR_NO_MORE_FILES_, 57 write_protect = boost::winapi::ERROR_WRITE_PROTECT_, 58 bad_unit = boost::winapi::ERROR_BAD_UNIT_, 59 not_ready = boost::winapi::ERROR_NOT_READY_, 60 bad_command = boost::winapi::ERROR_BAD_COMMAND_, 61 crc = boost::winapi::ERROR_CRC_, 62 bad_length = boost::winapi::ERROR_BAD_LENGTH_, 63 seek = boost::winapi::ERROR_SEEK_, 64 not_dos_disk = boost::winapi::ERROR_NOT_DOS_DISK_, 65 sector_not_found = boost::winapi::ERROR_SECTOR_NOT_FOUND_, 66 out_of_paper = boost::winapi::ERROR_OUT_OF_PAPER_, 67 write_fault = boost::winapi::ERROR_WRITE_FAULT_, 68 read_fault = boost::winapi::ERROR_READ_FAULT_, 69 gen_failure = boost::winapi::ERROR_GEN_FAILURE_, 70 sharing_violation = boost::winapi::ERROR_SHARING_VIOLATION_, 71 lock_violation = boost::winapi::ERROR_LOCK_VIOLATION_, 72 wrong_disk = boost::winapi::ERROR_WRONG_DISK_, 73 sharing_buffer_exceeded = boost::winapi::ERROR_SHARING_BUFFER_EXCEEDED_, 74 handle_eof = boost::winapi::ERROR_HANDLE_EOF_, 75 handle_disk_full= boost::winapi::ERROR_HANDLE_DISK_FULL_, 76 rem_not_list = boost::winapi::ERROR_REM_NOT_LIST_, 77 dup_name = boost::winapi::ERROR_DUP_NAME_, 78 bad_net_path = boost::winapi::ERROR_BAD_NETPATH_, 79 network_busy = boost::winapi::ERROR_NETWORK_BUSY_, 80 // ... 81 file_exists = boost::winapi::ERROR_FILE_EXISTS_, 82 cannot_make = boost::winapi::ERROR_CANNOT_MAKE_, 83 // ... 84 broken_pipe = boost::winapi::ERROR_BROKEN_PIPE_, 85 open_failed = boost::winapi::ERROR_OPEN_FAILED_, 86 buffer_overflow = boost::winapi::ERROR_BUFFER_OVERFLOW_, 87 disk_full= boost::winapi::ERROR_DISK_FULL_, 88 // ... 89 lock_failed = boost::winapi::ERROR_LOCK_FAILED_, 90 busy = boost::winapi::ERROR_BUSY_, 91 cancel_violation = boost::winapi::ERROR_CANCEL_VIOLATION_, 92 already_exists = boost::winapi::ERROR_ALREADY_EXISTS_ 93 // ... 94 95 // TODO: add more Windows errors 96 }; 97 98 } // namespace windows 99 100 # ifdef BOOST_SYSTEM_ENABLE_DEPRECATED 101 namespace windows = windows_error; 102 # endif 103 104 template<> struct is_error_code_enum<windows_error::windows_error_code> 105 { static const bool value = true; }; 106 107 namespace windows_error 108 { make_error_code(windows_error_code e)109 inline error_code make_error_code( windows_error_code e ) 110 { return error_code( e, system_category() ); } 111 } 112 113 } // namespace system 114 } // namespace boost 115 116 #endif // BOOST_WINDOWS_API 117 118 #endif // BOOST_SYSTEM_WINDOWS_ERROR_HPP 119