windows_error.hpp 4.8 KB

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