windows_error.hpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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_WINDOWS_ERROR_HPP
  7. #define BOOST_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. #include <winerror.h>
  14. namespace boost
  15. {
  16. namespace system
  17. {
  18. // Microsoft Windows ---------------------------------------------------//
  19. // To construct an error_code after a API error:
  20. //
  21. // error_code( ::GetLastError(), system_category )
  22. namespace windows_error
  23. {
  24. enum windows_error_code
  25. {
  26. success = 0,
  27. // These names and values are based on Windows winerror.h
  28. invalid_function = ERROR_INVALID_FUNCTION,
  29. file_not_found = ERROR_FILE_NOT_FOUND,
  30. path_not_found = ERROR_PATH_NOT_FOUND,
  31. too_many_open_files = ERROR_TOO_MANY_OPEN_FILES,
  32. access_denied = ERROR_ACCESS_DENIED,
  33. invalid_handle = ERROR_INVALID_HANDLE,
  34. arena_trashed = ERROR_ARENA_TRASHED,
  35. not_enough_memory = ERROR_NOT_ENOUGH_MEMORY,
  36. invalid_block = ERROR_INVALID_BLOCK,
  37. bad_environment = ERROR_BAD_ENVIRONMENT,
  38. bad_format = ERROR_BAD_FORMAT,
  39. invalid_access = ERROR_INVALID_ACCESS,
  40. outofmemory = ERROR_OUTOFMEMORY,
  41. invalid_drive = ERROR_INVALID_DRIVE,
  42. current_directory = ERROR_CURRENT_DIRECTORY,
  43. not_same_device = ERROR_NOT_SAME_DEVICE,
  44. no_more_files = ERROR_NO_MORE_FILES,
  45. write_protect = ERROR_WRITE_PROTECT,
  46. bad_unit = ERROR_BAD_UNIT,
  47. not_ready = ERROR_NOT_READY,
  48. bad_command = ERROR_BAD_COMMAND,
  49. crc = ERROR_CRC,
  50. bad_length = ERROR_BAD_LENGTH,
  51. seek = ERROR_SEEK,
  52. not_dos_disk = ERROR_NOT_DOS_DISK,
  53. sector_not_found = ERROR_SECTOR_NOT_FOUND,
  54. out_of_paper = ERROR_OUT_OF_PAPER,
  55. write_fault = ERROR_WRITE_FAULT,
  56. read_fault = ERROR_READ_FAULT,
  57. gen_failure = ERROR_GEN_FAILURE,
  58. sharing_violation = ERROR_SHARING_VIOLATION,
  59. lock_violation = ERROR_LOCK_VIOLATION,
  60. wrong_disk = ERROR_WRONG_DISK,
  61. sharing_buffer_exceeded = ERROR_SHARING_BUFFER_EXCEEDED,
  62. handle_eof = ERROR_HANDLE_EOF,
  63. handle_disk_full= ERROR_HANDLE_DISK_FULL,
  64. rem_not_list = ERROR_REM_NOT_LIST,
  65. dup_name = ERROR_DUP_NAME,
  66. bad_net_path = ERROR_BAD_NETPATH,
  67. network_busy = ERROR_NETWORK_BUSY,
  68. // ...
  69. file_exists = ERROR_FILE_EXISTS,
  70. cannot_make = ERROR_CANNOT_MAKE,
  71. // ...
  72. broken_pipe = ERROR_BROKEN_PIPE,
  73. open_failed = ERROR_OPEN_FAILED,
  74. buffer_overflow = ERROR_BUFFER_OVERFLOW,
  75. disk_full= ERROR_DISK_FULL,
  76. // ...
  77. lock_failed = ERROR_LOCK_FAILED,
  78. busy = ERROR_BUSY,
  79. cancel_violation = ERROR_CANCEL_VIOLATION,
  80. already_exists = ERROR_ALREADY_EXISTS
  81. // ...
  82. // TODO: add more Windows errors
  83. };
  84. } // namespace windows
  85. # ifndef BOOST_SYSTEM_NO_DEPRECATED
  86. namespace windows = windows_error;
  87. # endif
  88. template<> struct is_error_code_enum<windows_error::windows_error_code>
  89. { static const bool value = true; };
  90. namespace windows_error
  91. {
  92. inline error_code make_error_code( windows_error_code e )
  93. { return error_code( e, get_system_category() ); }
  94. }
  95. } // namespace system
  96. } // namespace boost
  97. #endif // BOOST_WINDOWS_API
  98. #endif // BOOST_WINDOWS_ERROR_HPP